前言
10013
以一种访问权限不允许的方式做了一个访问套接字的尝试。
原因
绑定一个处于CLOSE_WAIT状态的端口,会产生该错误
重现
先找到一个处于CLOSE_WAIT状态的端口49724
C:\Users\admin>netstat -ano |findstr CLOSE_WAIT
TCP 192.168.11.149:49724 123.60.175.170:80 CLOSE_WAIT 5904
代码测试
#include <iostream>
#include <winsock2.h>
#include <stdio.h>
#pragma comment(lib,"ws2_32.lib")
int main()
{
//初始化WSA
WORD sockVersion = MAKEWORD(2, 2);
WSADATA wsaData;//WSADATA结构体变量的地址值
//int WSAStartup(WORD wVersionRequested, LPWSADATA lpWSAData);
//成功时会返回0,失败时返回非零的错误代码值
if (WSAStartup(sockVersion, &wsaData) != 0)
{
std::cout << "初始化网络库失败,错误码:" << WSAGetLastError() << std::endl;
return -1;
}
//创建套接字
SOCKET socketListen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (socketListen == INVALID_SOCKET)
{
std::cout << "创建套接字失败,错误码:" << WSAGetLastError() << std::endl;
return -1;
}
//绑定IP和端口
sockaddr_in sin;//ipv4的指定方法是使用struct sockaddr_in类型的变量
sin.sin_family = AF_INET;
sin.sin_port = htons(49725);//设置端口。htons将主机的unsigned short int转换为网络字节顺序
sin.sin_addr.S_un.S_addr = inet_addr("192.168.11.149");//IP地址设置成INADDR_ANY,让系统自动获取本机的IP地址
//bind函数把一个地址族中的特定地址赋给scket。
if (::bind(socketListen, (LPSOCKADDR)&sin, sizeof(sin)) == SOCKET_ERROR)
{
std::cout << "绑定套接字失败,错误码:" << WSAGetLastError() << std::endl;
}
else
{
std::cout << "绑定套接字成功" << std::endl;
}
return 0;
}
标签:错误,int,错误码,WSAStartup,sockVersion,10013,CLOSE,include,WAIT
From: https://blog.51cto.com/fengyuzaitu/7400500