当前位置: 技术问答>linux和unix
请教各位一个关于linux网络编程的问题
来源: 互联网 发布时间:2017-03-02
本文导语: 请教linux网络编程的一个问题: 使用的是UDP协议接收和发送数据 while(1) { recv_rc = recvfrom(socket_descriptor, &seperate_info, sizeof(seperate_info), 0, (struct sockaddr *)&sin, &sin_len); if (recv_rc == -1) ...
请教linux网络编程的一个问题:
使用的是UDP协议接收和发送数据
现象是这样的:
只有在接收到PC发送的数据,linux编写的程序才会执行 send_frame((void*)p_1,512,2,vFrameNo++,sock,(struct sockaddr*)&sa_send,sizeof(sa_send));
这条语句,请问各位有经验的高手们,这不是 recvfrom将程序阻塞在接收处了,有接收时才会执行发送,
各位这个问题如果解决,谢谢您的回复!!!!!!
使用的是UDP协议接收和发送数据
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.
再看你程序逻辑是怎么的,
或者直接用fcntl把socket设置成非阻塞的。
这样如果没有数据则,recvfrom立刻返回-1 ,errno为EAGAIN.
再看你程序逻辑是怎么的,