#include<winsock2.h>
#include<stdio.h>
int main(int argc, char* argv[])
{
WSADATA wsaData;
SOCKET ListeningSocket;
SOCKET NewConnection;
SOCKADDR_IN ServerAddr;
SOCKADDR_IN ClientAddr;
int ClientAddrLen;
char Message[100];
int Port=5150;
if(WSAStartup(MAKEWORD(2,2),&wsaData)){
printf("初始化Winsock库失败!");
return 0;
}
ListeningSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
ServerAddr.sin_family=AF_INET;
ServerAddr.sin_addr.s_addr=htonl(INADDR_ANY);
ServerAddr.sin_port=htons(Port);
if(bind(ListeningSocket,(SOCKADDR *)&ServerAddr,sizeof(ServerAddr))==SOCKET_ERROR){
printf("\n绑定失败!,错误代码:%d",WSAGetLastError());
return 0;
}
if(listen(ListeningSocket,5)==SOCKET_ERROR){
printf("\n监听失败!错误代码:%d",WSAGetLastError());
return 0;
}
NewConnection=accept(ListeningSocket,(SOCKADDR*)&ClientAddr,&ClientAddrLen);
if(NewConnection==SOCKET_ERROR){
printf("\n连接失败!错误代码:%d",WSAGetLastError());
return 0;
}
if(recv(NewConnection,Message,sizeof(Message),0)==SOCKET_ERROR){
printf("\n接受数据失败!错误代码:%d",WSAGetLastError());
return 0;
}
printf("\n%s",Message);
closesocket(NewConnection);
closesocket(ListeningSocket);
WSACleanup();
return 1;
} 上面的代码中accept 调用总失败,错误代码是10014,请教高手是什么原因?
#include<stdio.h>
int main(int argc, char* argv[])
{
WSADATA wsaData;
SOCKET ListeningSocket;
SOCKET NewConnection;
SOCKADDR_IN ServerAddr;
SOCKADDR_IN ClientAddr;
int ClientAddrLen;
char Message[100];
int Port=5150;
if(WSAStartup(MAKEWORD(2,2),&wsaData)){
printf("初始化Winsock库失败!");
return 0;
}
ListeningSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
ServerAddr.sin_family=AF_INET;
ServerAddr.sin_addr.s_addr=htonl(INADDR_ANY);
ServerAddr.sin_port=htons(Port);
if(bind(ListeningSocket,(SOCKADDR *)&ServerAddr,sizeof(ServerAddr))==SOCKET_ERROR){
printf("\n绑定失败!,错误代码:%d",WSAGetLastError());
return 0;
}
if(listen(ListeningSocket,5)==SOCKET_ERROR){
printf("\n监听失败!错误代码:%d",WSAGetLastError());
return 0;
}
NewConnection=accept(ListeningSocket,(SOCKADDR*)&ClientAddr,&ClientAddrLen);
if(NewConnection==SOCKET_ERROR){
printf("\n连接失败!错误代码:%d",WSAGetLastError());
return 0;
}
if(recv(NewConnection,Message,sizeof(Message),0)==SOCKET_ERROR){
printf("\n接受数据失败!错误代码:%d",WSAGetLastError());
return 0;
}
printf("\n%s",Message);
closesocket(NewConnection);
closesocket(ListeningSocket);
WSACleanup();
return 1;
} 上面的代码中accept 调用总失败,错误代码是10014,请教高手是什么原因?
(10014)
Bad address.
The system detected an invalid pointer address in attempting to use a pointer argument of a call. This error occurs if an application passes an invalid pointer value, or if the length of the buffer is too small. For instance, if the length of an argument which is a struct sockaddr is smaller than sizeof(struct sockaddr).
你收到的地址有问题
搞以下
我开始还以为函数会返回长度的值给这个变量。不过还是很谢谢各位的帮忙!