如何利用socket进行接收某一端口的UDP包
请问各位大虾!我在客户端使用一个端口进行UDP包的接收,有没有一种有效的方法象类似TCP监听那样的方式接收信息,如果采用隔几秒循环查询端口的方式会不会导致在接收过程中包的丢失或者陷入死循环中.(前提是不能利用socket类)
[解决办法]
在线程函数里,做个循环接受
intudpRcv(int inSocket,
int inMyPort,
struct timeval *rcvTimeOut,
)
{
structsockaddr_in aMySockaddr;
FD_SET( inSocket, &rfds );
aMySockLen = sizeof( aMySockaddr );
bzero( &aMySockaddr, aMySockLen );
aMySockaddr.sin_family = AF_INET;
aMySockaddr.sin_port = htons( inMyPort );
aMySockaddr.sin_addr.s_addr= htonl( INADDR_ANY );
bzero( &(aMySockaddr.sin_zero), 8 );
aAddrLen = sizeof( struct sockaddr );
aSubRet = select( (inSocket + 1), &rfds, NULL, NULL, rcvTimeOut );
if( aSubRet > 0 )
{
aRecvSize =recvfrom ( inSocket, 接受BUF, 大小, (INT)MSG_PEEK, (struct sockaddr *)&aMySockaddr, (socklen_t*)&aAddrLen );
}