Remember that getchar() blocks your program so it doesnt get called while it's waiting for you to press Enter.
2010/11/5 Вячеслав Блинников <[email protected]> > 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 >
_______________________________________________ ENet-discuss mailing list [email protected] http://lists.cubik.org/mailman/listinfo/enet-discuss
