UDP的listen函数问题
我的代码如下:
void CNet_TestDlg::OnStartUdpServer()
{
SOCKET sk_Server , sk_Rcv;
sockaddr_in sk_addr;
int n_SockErr;
CString str_Out;
sk_Server = socket( AF_INET , SOCK_DGRAM , IPPROTO_UDP );
//sk_Server = socket( AF_INET , SOCK_STREAM , 0 );
sk_addr.sin_family = AF_INET;
sk_addr.sin_port = htons( 5050 );
sk_addr.sin_addr.s_addr = inet_addr( "127.0.0.1" ); //htonl( INADDR_ANY );
if( bind( sk_Server , (LPSOCKADDR) &sk_addr , sizeof( sk_addr )) == SOCKET_ERROR ){
n_SockErr = WSAGetLastError();
str_Out = "";
str_Out.Format( "%s%d" , str_Out , n_SockErr );
MessageBox( "错误代码:" + str_Out );
MessageBox( "绑定地址出错!" );
closesocket( sk_Server );
return;
}
if( listen( sk_Server , 2 ) == SOCKET_ERROR ){
n_SockErr = WSAGetLastError();
str_Out = "";
str_Out.Format( "%s%d" , str_Out , n_SockErr );
MessageBox( "错误代码:" + str_Out );
MessageBox( "监听数据包出错!" );
closesocket( sk_Server );
return;
}
MessageBox( "OK,已经成功启动UDP服务器!" );
}
问题:
为何总是在每次运行listen函数时,不能正确返回.
导致"监听数据包出错!"