windows socket 编程:bind 错误码10038 如何解决?

来源:百度知道 编辑:UC知道 时间:2024/06/14 06:04:21
源代码如下:

//******全局变量******//
SOCKET SvrFd;
sockaddr_in ServAddr;

//************主函数*************//
int main(int argc, char* argv[])
{
WORD wVersionRequested; //版本号
WSADATA wsaData; //数据
int err;
UNLNG phandle;

wVersionRequested = MAKEWORD(1,1);
err = WSAStartup(wVersionRequested,&wsaData);
if( err != 0)
{
return ERROR;
}
if(LOBYTE( wsaData.wVersion ) != 1 || HIBYTE( wsaData.wVersion) != 1)
{
WSACleanup();
return ERROR;
}

//创建socket套接字;
SvrFd = socket(AF_INET, SOCK_STREAM, 0);
err = WSAGetLastError();
if (err != 0)
{
perror("socket");
exit(1);
}

//初始化协议地址
char *IPAddr = "127.0.0.1";
ServAddr.sin_family = AF_INET;
ServAddr.sin_addr.s_addr = inet_addr(IPAddr);
ServAddr.sin_port = htons(4235);
memset(ServAddr.sin_zero, 0, sizeof

memset(ServAddr.sin_zero, 0, sizeof(struct sockaddr_in));

您真有趣……

WSAENOTSOCK
(10038)
Socket operation on nonsocket.
An operation was attempted on something that is not a socket. Either the socket handle parameter did not reference a valid socket, or for select, a member of an fd_set was not valid.

memset(ServAddr.sin_zero, 0, sizeof(struct sockaddr_in));
这个地方会破坏栈的