Linux UDP消息发送与接收的问题
Client端发送UDP报文,
Server端接收处理后,用来源地址(IP和端口与客户端发送的相同)直接发送信息回Client代码如下:
m_SrcAddrInfo从Server端的recvfrom函数里来,通过打印和抓包工具看出IP和端口是发送的IP和端口。
int m_Socket = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
sendto(m_Socket, buffer, bufferSize, 0,
(struct sockaddr*)&m_SrcAddrInfo, sizeof(m_SrcAddrInfo));
Client端在发送完成后等待该端口数据回应代码如下:
m_SocketID = openSocket();
timeout.tv_sec = 1;
timeout.tv_usec = INT_ZERO;
if(sendto(m_SocketID, buf, size, 0,
(struct sockaddr*)&m_ToAddr, sizeof(m_ToAddr)) != size)
{
closeSocket();
return -1;
}
active = select(m_SocketID + 1, &read_fd, NULL, NULL, &timeout);
但结果总是超时(active==0)。不能这样使用吗?还是哪里处理的不正确,请指教,谢谢了!
[解决办法]
m_SocketID + 1 ?
[解决办法]
你要调用 FD_SET(m_SocketID, read_fd);
建议参考《WinSock网络编程经络》第14章, 19章 这里有源码,解压后找Daytime.
源码下载地址:http://download.csdn.net/detail/geoff08zhang/4571358
[解决办法]