[ENet-discuss] Long Distance Packet Loss (maybe)?
Lee Salzman
lsalzman1 at cox.net
Fri Jan 15 08:28:32 PST 2010
Are you regularly calling enet_host_service on the client?
Lee
Alex Milstead wrote:
> Hey all,
>
> Just a heads up, (I don't know how reliable this is, exactly, but)
> I've been using a network packet monitoring tool call "wireshark" to
> monitor packets coming back and forth between client and server apps
> using an ENet wrapper I wrote.
>
> I'm using ENet to send a struct back and forth between machines. The
> struct itself isn't very big (only about 10 fields inside), and for
> the longest time sending it to and fro was no big problem. Recently,
> though, I've been testing out the server piece of the app(s) I'm
> writing, and according to wireshark, I'm receiving "Malformed
> Packets". I see this happening pretty frequently between machines when
> the client and server are in the same general (geographical) locale,
> however I've got a team member that is testing the client from Oregon
> (I'm in Georgia), and some seriously screwed up is happening. Every
> time he sends data, wireshark picks up that a packet is coming in, but
> ENet -never- hits the "ENET_EVENT_TYPE_RECEIVE" event on the server
> host that is servicing the connection.
>
> The basic break down of the apps ENet protocols are as follows (sans
> the client connecting to the server for the first time):
>
> Client code:
> ...
>
> SendData(void *data)
> {
> if (connected) // flag set to true when enet_host_connect and
> subsequent (enet_host_service && event.type ==
> ENET_EVENT_TYPE_CONNECT) events are true
> ENetPacket *packet = enet_packet_create(struct_ref,
> sizeof(structReferenced), ENET_PACKET_FLAG_RELIABLE);
> enet_peer_send(server, channel, packet);
> enet_host_flush(connection);
> }
> ...
>
> Server Code:
> ...
> while (enet_host_service(connection, &event, connection_lifetime) >= 0
> && !quit) {
> switch (event.type) {
> case ENET_EVENT_TYPE_CONNECT:
> cout << "A new client connected!";
>
> break;
> case ENET_EVENT_TYPE_RECEIVE:
> ProcessPacket(event);
> break;
> }
> }
> ...
>
> The problem appears to be when packets are sent from the client
> machine in Oregon. Like I mentioned, wireshark is telling me that the
> packet actually made it, but the ENET_EVENT_TYPE_RECEIVE -never-
> occurs. Again, I'm not sure how reliable "wireshark" is, but it's
> telling me that the UDP packet being sent is "malformed". This doesn't
> seem to happen when I'm sending from a client machine that is
> geographically closer to the server (e.g. in my home, but sending
> requests to the frontal IP instead of a local IP), although wireshark
> still seems to report that the datagram sent from the closer machine
> is also sometimes "malformed".
>
>
> Any ideas on what's happening/going wrong?
>
> Thanks for any help in advance.
>
> Cheers,
> Alex
>
More information about the ENet-discuss
mailing list