当前位置:首页 > linux > 正文

linux上如何查询端口是否开启

  • linux
  • 2024-04-30 04:01:40
  • 1478

1. netstat
bash
netstat -an | grep
例如,要查看端口 80 是否已打开:
bash
netstat -an | grep 80
2. ss
bash
ss -ant | grep
例如,要查看端口 443 是否已打开:
bash
ss -ant | grep 443
3. lsof
bash
lsof -i :
例如,要查看端口 22 是否已使用:
bash
lsof -i :22
4. nmap
bash
nmap -p -sT
例如,要扫描远程主机 10.0.0.5 上的端口 80:
bash
nmap -p 80 -sT 10.0.0.5
编程接口 (API)
1. getsockopt()
此函数允许程序从套接字选项中获取信息,包括端口号。
2. getservbyport()
此函数将端口号映射到相应的服务名称。
3. getaddrinfo()
此函数将主机名或地址解析为相关的套接字地址。
示例代码 (C)
c
#include
#include
int main() {
int sockfd, status;
struct sockaddr_in addr;
socklen_t addr_len = sizeof(addr);
// 创建套接字
sockfd = socket(AF_INET, SOCK_STREAM, 0);
// 设置套接字选项
int port = 80; // 要查询的端口
addr.sin_family = AF_INET;
addr.sin_port = htons(port);
addr.sin_addr.s_addr = INADDR_ANY;
// 绑定套接字到端口
status = bind(sockfd, (struct sockaddr )&addr, addr_len);
// 检查套接字是否已绑定到端口
if (status == 0) {
printf("端口 %d 已打开\n", port);
} else {
printf("端口 %d 未打开\n", port);
}
// 关闭套接字
close(sockfd);
return 0;
}