[ENet-discuss] channel confusion

Lee Salzman lsalzman at telerama.com
Sun Jan 18 18:42:24 PST 2004


AH! The number passed in to enet_host_connect() is a cardinality, NOT
the number of the last channel. So you need to pass in 2.

Reminds me that I need some sanity checking in enet_peer_send() to
detect passing in valid channel ids. Ideally enet_peer_send() would
return -1 in these situations. ;)

Lee

On Mon, Jan 19, 2004 at 01:49:52AM +0000, Brad Monahan wrote:
> This is the client code I'm using:
> 
> // try to connect
> ENetAddress address;
> ENetEvent event;
> ENetPeer *peer;
> 
> /* connect to some.server.net:1234 */
> enet_address_set_host(&address, gServerIP);
> address.port = gServerPort;
> 
> /* initiate the connection, allocating the two channels 0 and 1 */
> peer = enet_host_connect(gClient, &address, 1);
> if(peer == NULL) return 1;
> 
> /* wait up to 5 seconds for the connection attempt to succeed */
> if(enet_host_service(gClient, &event, 5000) > 0 && event.type == 
> ENET_EVENT_TYPE_CONNECT){
>   SendLoginRequest();
> 
> } else {
>   /* either the 5 seconds are up or a disconnect event was */
>   /* received. Reset the peer in the event the 5 seconds   */
>   /* had run out without any significant event             */
>   CloseConnection();
>   enet_deinitialize();
> 
>   MessageBox(NULL, "Couldn't connect to the server!", "Error", MB_OK);
> 
>   return 1;
> }
> 
> Note: The program terminates if it doesn't recieve ENET_EVENT_TYPE_CONNECT.
> 
> >>From there it calls this function 10 times a second to send key update 
> >>data 
> to the server:
> 
> // note: unreliable, unsequenced packet over channel 1
> void SendClientUpdate()
> {
>   MSG_CLIENTUPDATE_DATA data;
> 
>   data.type = MSG_CLIENTUPDATE;
> 
>   data.controls = user[localidx].controls;
>   data.angle = user[localidx].angle;
>   data.shotangle = user[localidx].shotangle;
> 
>   ENetPacket *packet = enet_packet_create(&data, sizeof(data), 0);
>   enet_peer_send(&gClient->peers[0], 1, packet);
>   enet_host_flush(gClient);
> }
> 
> Here's an example of how I send reliable, sequenced packets on channel 0:
> 
> void SendLoginRequest()
> {
>   MSG_LOGINREQ_DATA loginreq;
> 
>   loginreq.type = MSG_LOGINREQ;
> 
>   loginreq.ver = APP_VERSION;
>   strncpy(loginreq.name, gUsername, sizeof(loginreq.name));
> 
>   ENetPacket *packet = enet_packet_create(&loginreq, sizeof(loginreq), 
> ENET_PACKET_FLAG_RELIABLE);
>   enet_peer_send(&gClient->peers[0], 0, packet);
>   enet_host_flush(gClient);
> }
> 
> 
> -Brad
> 
> 
> 
> >From: Lee Salzman <lsalzman at telerama.com>
> >Reply-To: Discussion of the ENet library <enet-discuss at cubik.org>
> >To: Discussion of the ENet library <enet-discuss at cubik.org>
> >Subject: Re: [ENet-discuss] channel confusion
> >Date: Sun, 18 Jan 2004 17:55:47 -0500
> >
> >All the connections in ENet are bidirectional so the server doesn't have
> >to do anything more than accept the connection. I would really have to
> >see your code to know what's going on.
> >
> >Lee
> >
> >On Sun, Jan 18, 2004 at 10:48:49PM +0000, Brad Monahan wrote:
> >> Yes I am. That's why I'm thinking it's something with the way I have 
> >things
> >> setup for the channels. Does what I explained seem to be what I should 
> >be
> >> doing then?
> >>
> >> -Brad
> >>
> >_______________________________________________
> >ENet-discuss mailing list
> >ENet-discuss at cubik.org
> >http://lists.cubik.org/mailman/listinfo/enet-discuss
> 
> _________________________________________________________________
> Learn how to choose, serve, and enjoy wine at Wine @ MSN. 
> http://wine.msn.com/
> 

> _______________________________________________
> ENet-discuss mailing list
> ENet-discuss at cubik.org
> http://lists.cubik.org/mailman/listinfo/enet-discuss



More information about the ENet-discuss mailing list