That is strange because previous advice helped me - everything what was needed is to call "enet_host_service()" in separate thread (I tried to call it between "getchar()" calls but there still was disconnections). But I definetly feel some lags. Sometimes lags are obvious but sometimes it looks like there are no of them - I think it's depends on when how close to "enet_host_service()"'s time interval "enet_peer_send()" will be called.
2010/11/5 Nicholas J Ingrassellino <[email protected]>: > The same thing happens to me if the client does nothing (no events to send, > ect) even when calling enet_host_service() on a regular basis. I just added > an unreliable "ping packet" every once in a while which solved it. > > ________________________________ > > Nicholas J Ingrassellino > LifebloodNetworks.com || [email protected] > > "The idea that I can be presented with a problem, set out to logically solve > it with the tools at hand, and wind up with a program that could not be > legally used because someone else followed the same logical steps some years > ago and filed for a patent on it is horrifying." > - John Carmack on software patents > > On 11/05/2010 10:10 AM, Nuno Silva wrote: > > Hey there. > On your while(true) on the client you must also call enet_host_service in > order for the client to keep its connection alive. > > 2010/11/5 Вячеслав Блинников <[email protected]> >> >> Hello! >> >> I wrote the base client accordingly the tutorial and the client which >> read inputting through console characters and send it to the server. >> Everything is fine but just first 30 seconds - then happen the >> disconnection (message "Client information disconnected" shown). >> What is wrong with my code? >> >> >> >> Server code: >> >> #include <cstdio> >> #include "enet\enet.h" >> int main(int argc, int** argv) >> { >> if (enet_initialize () != 0) >> { >> printf ("An error occurred while initializing ENet.\n"); >> goto END; >> } >> ENetAddress address; >> address.host = ENET_HOST_ANY; >> address.port = 1234; >> ENetHost* server = enet_host_create ( & address, 32, 2, 0, 0); >> if (server == NULL) >> { >> printf("An error occurred while trying to create an ENet >> client host.\n"); >> goto END; >> } >> ENetEvent event; >> WAIT_FOR_AN_EVENT: >> enet_host_service(server, &event, 5); >> switch (event.type) >> { >> case ENET_EVENT_TYPE_CONNECT: >> printf ("A new client connected from %x:%u.\n", event.peer >> -> >> address.host, event.peer -> address.port); >> event.peer -> data = "Client information"; >> break; >> >> case ENET_EVENT_TYPE_RECEIVE: >> printf ("A packet of length %u was received from %s on >> channel %u. >> Containings:\n %s", event.packet -> dataLength, event.peer -> data, >> event.channelID, event.packet -> data); >> enet_packet_destroy (event.packet); >> break; >> >> case ENET_EVENT_TYPE_DISCONNECT: >> printf ("%s disconected.\n", event.peer -> data); >> event.peer -> data = NULL; >> break; >> >> case ENET_EVENT_TYPE_NONE: >> break; >> } >> goto WAIT_FOR_AN_EVENT; >> >> printf("host halted.\n"); >> >> END: >> getchar(); >> return 0; >> } >> >> >> >> Client code: >> >> #include <cstdio> >> #include "enet\enet.h" >> #include <vector> >> int main(int argc, int** argv) >> { >> //where reading console data will be stored: >> std::vector<char> buffer; >> >> if (enet_initialize () != 0) >> { >> printf ("An error occurred while initializing ENet.\n"); >> goto END; >> } >> ENetHost* client = enet_host_create ( NULL, 1, 2, 57600 / 8, >> 14400 / 8); >> if(client == 0l) >> { >> printf("An error occurred while trying to create an ENet >> server host.\n"); >> goto END; >> } >> ENetAddress address; >> enet_address_set_host(&address, "localhost"); >> address.port = 1234; >> >> ENetPeer* peer = enet_host_connect(client, &address, 2, 0); >> if(peer == 0l) >> { >> printf("No available peers for initiating an ENet >> connection.\n"); >> goto END; >> } >> >> ENetEvent event; >> if (enet_host_service (client, & event, 5000) > 0 && event.type == >> ENET_EVENT_TYPE_CONNECT) >> { >> puts ("Connection to localhost:1234 succeeded."); >> } >> else >> { >> enet_peer_reset (peer); >> >> puts ("Connection to localhost:1234 failed."); >> goto END; >> } >> >> printf("Input some data which will be sent to server...\n"); >> >> INPUT_DATA: >> buffer.clear(); >> while(true) >> { >> char character = getchar(); >> buffer.push_back(character); >> if(character == '\n') >> { >> break; >> } >> } >> buffer.push_back('\0'); >> >> ENetPacket * packet = enet_packet_create(&buffer[0], buffer.size(), >> ENET_PACKET_FLAG_RELIABLE); >> enet_peer_send (peer, 0, packet); >> enet_host_flush(client); >> goto INPUT_DATA; >> >> END: >> getchar(); >> >> return 0; >> } >> _______________________________________________ >> ENet-discuss mailing list >> [email protected] >> http://lists.cubik.org/mailman/listinfo/enet-discuss > > > _______________________________________________ > ENet-discuss mailing list > [email protected] > http://lists.cubik.org/mailman/listinfo/enet-discuss > > _______________________________________________ > ENet-discuss mailing list > [email protected] > http://lists.cubik.org/mailman/listinfo/enet-discuss > > _______________________________________________ ENet-discuss mailing list [email protected] http://lists.cubik.org/mailman/listinfo/enet-discuss
