我有一个程序使用telnet发送数据。通过使用putty,我可以获得数据。
但在我的代码中我使用相同的conenction prefs(Same ip = 127.0.0.1,Same port = 27021)
但我收到WSAENOTSOCK(10038)错误。
这是我的代码:
WSADATA WSAData;
SOCKADDR_IN sin;
SOCKET sock;
WSAStartup( MAKEWORD( 2, 2 ), &WSAData );
sock = WSASocket( AF_INET, SOCK_STREAM, IPPROTO_TCP, 0, 0, 0 );
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = htonl(INADDR_ANY);
sin.sin_port = htons( 27021 );
bind( sock, ( SOCKADDR * )&sin, sizeof( sin ) );
listen( sock, SOMAXCONN );
int sin_len=sizeof(sin);
while( true )
{
SOCKET tmp = accept( sock, NULL, NULL );
char buff[ 1024 ];
int result = recv(tmp, buff, 1024, 0);
std::cout<<buff<<" "<<result<<" "<<WSAGetLastError()<<std::endl;
closesocket( tmp );
}
return( 0 );
}
它返回-1作为结果,10038作为wsagetlasterror。
编辑:如果我使用sin.sin_addr.s_addr = htonl(INADDR_ANY);我得到错误代码,但如果我使用sin.sin_addr.s_addr = inet_addr(“127.0.0.1”)没有收到数据。