[ENet-discuss] How to send and recevice boradcast packets using enet
enetcub
enet_club at 126.com
Sun Jan 6 22:33:59 PST 2013
enet-discuss,
i just be in a spot with send and receiveing BROADCAST packets in enet, i don't know what is the right way to playing with function enet_socket_receive
//sender_code
P2UdpSocket sck=p2udp_socket_create(P2UDP_SOCKET_TYPE_DATAGRAM);
if(INVALID_SOCKET == sck){
fprintf(stderr,"error while create sccket\n");
return(EXIT_FAILURE);
}
//set as broadcast option
p2udp_socket_set_option(sck,P2UDP_SOCKOPT_BROADCAST,1);
//set broadcast addrs
P2UdpAddress p2u_addr;
p2u_addr.host=P2UDP_HOST_BROADCAST;
p2u_addr.port=P2UDP_HOST_TO_NET_16(P2U_PORT);
printf("starting send broadcast packages...\n");
//gererate notify package
char p2u_act_msg[16];
strcpy(p2u_act_msg,P2U_ASK_ALIVE_FLAG_MSG);
int p2u_alive_host_count=0; //queue length
while(1){
p2udp_socket_send(sck,&p2u_addr,&p2u_act_msg,sizeof(p2u_act_msg));
printf(".");
Sleep(1000);
}
//recv_code
P2UdpSocket sck=p2udp_socket_create(P2UDP_SOCKET_TYPE_DATAGRAM);
if(INVALID_SOCKET == sck){
fprintf(stderr,"error while create a cscoket\n");
return(EXIT_FAILURE);
}
p2udp_socket_set_option(sck,P2UDP_SOCKOPT_BROADCAST,1);
P2UdpAddress serv_addr;
serv_addr.host=P2UDP_HOST_ANY;
serv_addr.port=P2UDP_HOST_TO_NET_16(P2U_PORT);
int iret=p2udp_socket_bind(sck,&serv_addr);
if(SOCKET_ERROR == iret){
fprintf(stderr,"bind socket with error\n");
p2udp_socket_shutdown(sck,0);
return(EXIT_FAILURE);
}
//host who send broadcast msg
P2UdpAddress host_addr;
char msg_buf[1024];
int recv_len=0;
while(1){printf("data length:%d\n",recv_len); ------------> this alway got 0 or -1 ,why?
recv_len=p2udp_socket_receive(sck,&host_addr,&msg_buf,sizeof(msg_buf));
if(recv_len <= 0){
fprintf(stderr,"error receiving data..\n");
//p2udp_socket_shutdown(sck,0);
//return(EXIT_FAILURE);
//break; //no msg or blcked,just wait
}else{
static int seq_count=0;
memset(msg_buf+recv_len,'/0',1);
printf("get broadcast message from %u:%d with length:%d has content:%s seq_id=%d\n",
host_addr.host,
host_addr.port,
recv_len,
msg_buf,
seq_count++);
//check if send is alive flag
if(strcmp(msg_buf,P2U_ASK_ALIVE_FLAG_MSG)){
printf("i am alive\n");
}else{
printf("i am dead\n");
}
memset(msg_buf,0,sizeof(msg_buf));
}
Sleep(1000);
}
p2udp_socket_shutdown(sck,0);
enetcub,enet_club at 126.com
2013-01-07
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cubik.org/pipermail/enet-discuss/attachments/20130107/e4a75547/attachment.html>
More information about the ENet-discuss
mailing list