I always use 0 for the enet_host_service() delay. And as for delays, I haven't noticed any performance issues with ENet, although I'm doing a game where framerate is very important. Ruud
2010/11/5 Nuno Silva <[email protected]> > Well, it depends, if you're not getting any events it's normal that > enet_host_service blocks for 15ms. Are you trying to say that ENet is > "slow"? Because 7.5ms of lag between checking events and sending a message > isnt really slow. ENet has been used in various projects with great success, > surely those 7.5ms arent time critical for your app? If they are, then you > might consider getting a different network library. > > 2010/11/5 Вячеслав Блинников <[email protected]> > >> I reduced the timeout (third param of "enet_host_service()") to 15 >> milliseconds and connection became faster - so it proofs that actually >> message (using "enet_peer_send()") will be sent with lag which vary >> between 0 and 15 milliseconds - we have 7,5 milliseconds lag! And it's >> just in sending. >> >> 5 ноября 2010 г. 18:17 пользователь Вячеслав Блинников >> <[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 > >
_______________________________________________ ENet-discuss mailing list [email protected] http://lists.cubik.org/mailman/listinfo/enet-discuss
