首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

一个关于linux网络编程的有关问题

2012-07-25 
请教各位一个关于linux网络编程的问题请教linux网络编程的一个问题:使用的是UDP协议接收和发送数据C/C++ c

请教各位一个关于linux网络编程的问题
请教linux网络编程的一个问题:
使用的是UDP协议接收和发送数据

C/C++ code
while(1){    recv_rc = recvfrom(socket_descriptor, &seperate_info, sizeof(seperate_info), 0,             (struct sockaddr *)&sin, &sin_len);    if (recv_rc == -1)    {      perror ("recvfrom call failed");      exit (errno);    }    //接收数据的处理    ........    ........     //向PC发送数据      send_frame((void*)p_1,512,2,vFrameNo++,sock,(struct sockaddr*)&sa_send,sizeof(sa_send));        }


现象是这样的:
只有在接收到PC发送的数据,linux编写的程序才会执行 send_frame((void*)p_1,512,2,vFrameNo++,sock,(struct sockaddr*)&sa_send,sizeof(sa_send));
这条语句,请问各位有经验的高手们,这不是 recvfrom将程序阻塞在接收处了,有接收时才会执行发送,
各位这个问题如果解决,谢谢您的回复!!!!!!


[解决办法]
没看懂什么意思

前面堵塞了,可不就走不到后面去吗
[解决办法]
网上搜索下select或者poll或者epoll的用法 ,

或者直接用fcntl把socket设置成非阻塞的。
这样如果没有数据则,recvfrom立刻返回-1 ,errno为EAGAIN.
再看你程序逻辑是怎么的,

热点排行