订阅号可以做微网站,苏州家政保洁公司哪家好,项目,新零售社交电商平台一、检查步骤
使用socket函数创建socket_fd套接字。使用sockaddr_in结构体配置协议和端口号。使用bind函数尝试与端口进行绑定#xff0c;成功返回0表示未被占用#xff0c;失败返回-1表示已被占用。
二、CODE
其中port需要修改为想要检测的端口号#xff0c;也可以将代码…一、检查步骤
使用socket函数创建socket_fd套接字。使用sockaddr_in结构体配置协议和端口号。使用bind函数尝试与端口进行绑定成功返回0表示未被占用失败返回-1表示已被占用。
二、CODE
其中port需要修改为想要检测的端口号也可以将代码改写为根据argv参数检测。
#include iostream
#include winsock2.h // Windows套接字编程头文件
// #include sys/socket.h // Unix/Linux套接字编程头文件
#include Windows.hint main() {// WSAStartup用于初始化 Winsock 库它在进行套接字编程之前需要调用。// MAKEWORD(2,2)表示请求2.2版本// wsaData用于接收WinSock初始化的信息WSADATA wsaData;int iResult WSAStartup(MAKEWORD(2, 2), wsaData);if (iResult ! NO_ERROR) {wprintf(LWSAStartup failed with error: %ld\n, iResult);return 1;}// 上面代码只有windows需要加linux不需要int port 80; // 要检查的端口号// 创建套接字SOCKET sock socket(AF_INET, SOCK_STREAM, 0); // For Windows// int sock socket(AF_INET, SOCK_STREAM, 0); // For Unix/Linuxif (sock INVALID_SOCKET) {std::cerr Error creating socket std::endl;return 1;}// 设置服务器地址信息sockaddr_in serverAddress;// 将serverAddress内存全部写0ZeroMemory(serverAddress,sizeof(serverAddress));serverAddress.sin_family AF_INET;serverAddress.sin_port htons(port);serverAddress.sin_addr.s_addr INADDR_ANY;// 尝试绑定套接字到指定端口int result bind(sock, (struct sockaddr*)serverAddress, sizeof(serverAddress));if (result 0) {std::cout Port port is available std::endl;} else {std::cerr Port port is already in use std::endl;}// 关闭套接字closesocket(sock); // For Windows// close(sock); // For Unix/Linuxreturn 0;
}三、运行结果
使用以下命令行编译cpp代码其中checkPort.cpp为源文件checkPort为输出可执行文件-lws2_32用于链接Windows的Winsock2库。 g .\checkPort.cpp -o checkPort -lws2_32以下命令行运行可执行文件 .\checkPort.exe如果端口未被占用则会输出以下内容。 如果端口已被占用则会输出以下内容。 如果windows下输出以下内容一般来说是因为WSAStartup没有配置。