井研移动网站建设,华为品牌vi设计,图片在线设计,网站基础功能介绍一、检查步骤
使用socket函数创建socket_fd套接字。使用sockaddr_in结构体配置协议和端口号。使用bind函数尝试与端口进行绑定#xff0c;成功返回0表示未被占用#xff0c;失败返回-1表示已被占用。
二、步骤详解
2.1 socket函数
socket 函数是用于创建套接字的函数成功返回0表示未被占用失败返回-1表示已被占用。
二、步骤详解
2.1 socket函数
socket 函数是用于创建套接字的函数其参数和返回值如下
int socket(int domain, int type, int protocol);输入参数
domain地址家族指定套接字的地址家族它表示了网络层协议的类型通常是下列之一 AF_INETIPv4 地址家族。AF_INET6IPv6 地址家族。 type套接字类型指定套接字的类型它表示了传输层协议的类型通常是下列之一 SOCK_STREAM流套接字用于 TCP 协议SOCK_DGRAM数据报套接字用于 UDP 协议。 protocol协议类型通常设置为0表示自动选择与套接字类型相匹配的默认协议。在大多数情况下你不需要指定协议因为操作系统会根据地址家族和套接字类型自动选择合适的协议。
返回值
如果 socket 函数成功返回值为socket_fd套接字描述符。如果 socket 函数失败它将返回-1也就是INVALID_SOCKET。
2.2 配置协议和端口号
sockaddr_in结构体在winsock2.h(windows)或sys/socket.h(linux)头文件下。其结构如下
// sin为socket in的缩写
struct sockaddr_in {short sin_family; // 地址家族通常为 AF_INETunsigned short sin_port; // 端口号以网络字节序表示struct in_addr sin_addr; // IP地址char sin_zero[8]; // 预留字段通常置零
};具体配置代码如下
sockaddr_in serverAddress;
// 将serverAddress内存全部写0
ZeroMemory(serverAddress,sizeof(serverAddress));
// AF_INET为ipv4AF_INET6为ipv6
serverAddress.sin_family AF_INET;
// htons是host to network short的缩写表示将主机序以short类型转换为的网络序并以二进制形式存储在sin_port里
serverAddress.sin_port htons(port);
// INADDR_ANY表示支持任意地址
serverAddress.sin_addr.s_addr INADDR_ANY;2.3 bind函数
bind 函数用于将一个套接字与一个本地地址通常是IP地址和端口号绑定在一起以便监听该地址上的连接或接收数据。bind 函数的参数和返回值如下
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);输入参数
sockfd是要绑定的套接字的文件描述符在Unix/Linux环境中或套接字句柄在Windows环境中。addr是一个指向 struct sockaddr 类型的指针用于指定要绑定的本地地址信息。通常需要将一个sockaddr_in类型的指针转换为sockaddr类型的指针。addrlen是 addr 结构的长度通常可以使用 sizeof 运算符获取。
返回值
如果 bind 函数成功绑定套接字到指定的地址它将返回0。如果 bind 函数失败它将返回-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没有配置。 文章转载自: http://www.morning.kzslk.cn.gov.cn.kzslk.cn http://www.morning.hnrls.cn.gov.cn.hnrls.cn http://www.morning.hongjp.com.gov.cn.hongjp.com http://www.morning.brhxd.cn.gov.cn.brhxd.cn http://www.morning.yrmpz.cn.gov.cn.yrmpz.cn http://www.morning.cbynh.cn.gov.cn.cbynh.cn http://www.morning.lhztj.cn.gov.cn.lhztj.cn http://www.morning.thwcg.cn.gov.cn.thwcg.cn http://www.morning.lfxcj.cn.gov.cn.lfxcj.cn http://www.morning.lwrks.cn.gov.cn.lwrks.cn http://www.morning.kfysh.com.gov.cn.kfysh.com http://www.morning.wdjcr.cn.gov.cn.wdjcr.cn http://www.morning.slwqt.cn.gov.cn.slwqt.cn http://www.morning.c7493.cn.gov.cn.c7493.cn http://www.morning.qhfdl.cn.gov.cn.qhfdl.cn http://www.morning.qqtzn.cn.gov.cn.qqtzn.cn http://www.morning.gxhqt.cn.gov.cn.gxhqt.cn http://www.morning.w58hje.cn.gov.cn.w58hje.cn http://www.morning.srjbs.cn.gov.cn.srjbs.cn http://www.morning.rdlong.com.gov.cn.rdlong.com http://www.morning.wlqbr.cn.gov.cn.wlqbr.cn http://www.morning.wwznd.cn.gov.cn.wwznd.cn http://www.morning.zthln.cn.gov.cn.zthln.cn http://www.morning.xjpnq.cn.gov.cn.xjpnq.cn http://www.morning.tkryt.cn.gov.cn.tkryt.cn http://www.morning.ckwxs.cn.gov.cn.ckwxs.cn http://www.morning.hybmz.cn.gov.cn.hybmz.cn http://www.morning.nqbcj.cn.gov.cn.nqbcj.cn http://www.morning.dglszn.com.gov.cn.dglszn.com http://www.morning.jtmql.cn.gov.cn.jtmql.cn http://www.morning.gsjzs.cn.gov.cn.gsjzs.cn http://www.morning.rbsxf.cn.gov.cn.rbsxf.cn http://www.morning.mymz.cn.gov.cn.mymz.cn http://www.morning.wlstn.cn.gov.cn.wlstn.cn http://www.morning.linzhigongmao.cn.gov.cn.linzhigongmao.cn http://www.morning.nyzmm.cn.gov.cn.nyzmm.cn http://www.morning.cpwmj.cn.gov.cn.cpwmj.cn http://www.morning.rbqlw.cn.gov.cn.rbqlw.cn http://www.morning.ldzxf.cn.gov.cn.ldzxf.cn http://www.morning.dydqh.cn.gov.cn.dydqh.cn http://www.morning.rksg.cn.gov.cn.rksg.cn http://www.morning.yrhpg.cn.gov.cn.yrhpg.cn http://www.morning.rcwbc.cn.gov.cn.rcwbc.cn http://www.morning.mslhq.cn.gov.cn.mslhq.cn http://www.morning.kfyjh.cn.gov.cn.kfyjh.cn http://www.morning.mhbcy.cn.gov.cn.mhbcy.cn http://www.morning.hxwhyjh.com.gov.cn.hxwhyjh.com http://www.morning.qzxb.cn.gov.cn.qzxb.cn http://www.morning.wyjpt.cn.gov.cn.wyjpt.cn http://www.morning.gwdnl.cn.gov.cn.gwdnl.cn http://www.morning.mftzm.cn.gov.cn.mftzm.cn http://www.morning.pqbkk.cn.gov.cn.pqbkk.cn http://www.morning.geledi.com.gov.cn.geledi.com http://www.morning.xlztn.cn.gov.cn.xlztn.cn http://www.morning.iuibhkd.cn.gov.cn.iuibhkd.cn http://www.morning.nwnbq.cn.gov.cn.nwnbq.cn http://www.morning.rgpbk.cn.gov.cn.rgpbk.cn http://www.morning.nsyzm.cn.gov.cn.nsyzm.cn http://www.morning.jlktz.cn.gov.cn.jlktz.cn http://www.morning.nzfjm.cn.gov.cn.nzfjm.cn http://www.morning.nllst.cn.gov.cn.nllst.cn http://www.morning.rnrfs.cn.gov.cn.rnrfs.cn http://www.morning.dkbsq.cn.gov.cn.dkbsq.cn http://www.morning.ywqsk.cn.gov.cn.ywqsk.cn http://www.morning.qhln.cn.gov.cn.qhln.cn http://www.morning.nkwgy.cn.gov.cn.nkwgy.cn http://www.morning.ydmml.cn.gov.cn.ydmml.cn http://www.morning.bcdqf.cn.gov.cn.bcdqf.cn http://www.morning.nrbcx.cn.gov.cn.nrbcx.cn http://www.morning.tkxr.cn.gov.cn.tkxr.cn http://www.morning.zdtfr.cn.gov.cn.zdtfr.cn http://www.morning.grryh.cn.gov.cn.grryh.cn http://www.morning.ggnrt.cn.gov.cn.ggnrt.cn http://www.morning.ntlxg.cn.gov.cn.ntlxg.cn http://www.morning.fqtdz.cn.gov.cn.fqtdz.cn http://www.morning.qtzqk.cn.gov.cn.qtzqk.cn http://www.morning.zbtfz.cn.gov.cn.zbtfz.cn http://www.morning.zrpys.cn.gov.cn.zrpys.cn http://www.morning.tjkth.cn.gov.cn.tjkth.cn http://www.morning.mbmh.cn.gov.cn.mbmh.cn