请教各位一个关于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.
再看你程序逻辑是怎么的,