[ENet-discuss] Problems getting ENet to work on Solaris
Eberhart, Andrew
andrew.eberhart at intel.com
Mon Sep 8 17:46:05 PDT 2003
When I try using enet_host_service in the client program, the server
crashes with a bus error.
Here is the meat of what I am trying:
client:
enet_initialize();
client = enet_host_create (NULL, 1, 0, 0);
enet_address_set_host (& address, "192.168.90.45");
address.port = 11234;
peer = enet_host_connect (client, & address, 2);
enet_host_service (client, & event, 5000);
while (1) {
packet = enet_packet_create ("stuff", strlen("stuff") + 1,
ENET_PACKET_FLAG_RELIABLE);
enet_peer_send (peer, 3, packet);
enet_host_service (client, & event, 5000);
}
server:
enet_initialize();
enet_address_set_host (& address, "192.168.90.45");
address.port = 11234;
server = enet_host_create (& address, 32, 0, 0);
while (1) {
enet_host_service (server, & event, 1000);
...
}
As soon as the enet_host_service is called on the client after the
enet_peer_send() function, the server gets a bus error.
If I use enet_host_flush() instead of the enet_host_service on the
client, the server does not crash. It behaves as mentioned below.
What am I doing wrong?
Thanks!
Andrew
-----Original Message-----
From: Lee Salzman [mailto:lsalzman at telerama.com]
Sent: Thursday, September 04, 2003 4:51 PM
To: Discussion of the ENet library
Subject: Re: [ENet-discuss] Problems getting ENet to work on Solaris
You need to call enet_host_service() or enet_host_flush() on
the client side. Functions such as enet_peer_send() and
enet_peer_disconnect() only queue requests.
enet_host_service() must be called after issuing anything
other than a packet send (connection, disconnection, etc.),
whereas enet_host_flush() will send out any queued commands
(in particular, packet sends) but will not handle any acknowledgement
until enet_host_service() is called (so enet_host_service()
at some point needs to be called if dealing with reliable packets.)
To summarize: ENet works in a "non-blocking" fashion, and doesn't
really do anything until enet_host_service() is called. :)
Lee
On Thu, Sep 04, 2003 at 02:46:42PM -0400, Eberhart, Andrew wrote:
> Hello.
>
> I am having some problems with ENet on Solaris.
>
> Disclaimer: I am a SysAdmin (not a programmer), so it a strong
> possibility that I am having usage issues.
>
> If anyone can help me out with this, I'd appreciate it.
>
> I tried using the example code from the ENet Tutorial to create a
basic
> client and a server. If it would help to see the code, let me know.
>
> The client says it is able to connect to the server just fine. It
> reports that a connection is seen (enet_host_service() == 1 and
> event.type == ENET_EVENT_TYPE_CONNECT). At this point, the server does
> not acknowledge anything received. The server is listening with the
> enet_host_service() function.
>
> Once a packet is sent from the client with enet_peer_send() and then
an
> enet_host_flush(), the server reports it received a new client
> connection. This only occurs when if a call is made to
> enet_host_flush(). It does not do anything if enet_peer_send() is used
> or after the first packet is sent.
>
> I never see any other activity with the server other than that one
> connect. When the client calls enet_peer_disconnect() and
> enet_peer_reset(), the server does not indicate an
> ENET_EVENT_TYPE_DISCONNECT.
>
> I have other issues, but I can wait for them. :-) Any help is
> appreciated!
>
> Thanks!
> Andrew
>
> ---
> Andrew Eberhart phone: (919) 845-7530
> Intel Americas, Inc. email: andrew.eberhart at intel.com
>
More information about the ENet-discuss
mailing list