用C++写一个完成端口程序
时间: 2023-10-10 14:16:04 浏览: 39
您好!下面是一个简单的 C 语言代码实现端口扫描的程序:
```
#include <stdio.h>
#include <sys/socket.h>
#include <errno.h>
#include <netdb.h>
#include <string.h>
#include <stdlib.h>
int main(int argc , char **argv)
{
int sock;
int port;
struct sockaddr_in target;
struct hostent *host;
if (argc < 2) {
printf("请输入主机名和端口号\n");
return 1;
}
host = gethostbyname(argv[1]);
if (host == NULL) {
herror("gethostbyname() failed");
return 1;
}
port = atoi(argv[2]);
/* 创建 socket */
sock = socket(AF_INET, SOCK_STREAM, 0);
if (sock == -1) {
perror("socket() failed");
return 1;
}
target.sin_family = AF_INET;
target.sin_port = htons(port);
target.sin_addr = *((struct in_addr *)host->h_addr);
memset(&(target.sin_zero), '\0', 8);
/* 连接到目标主机 */
if (connect(sock, (struct sockaddr *)&target, sizeof(struct sockaddr)) == -1) {
/* 如果连接失败,说明端口不可用 */
printf("端口 %d 不可用\n", port);
} else {
/* 如果连接成功,说明端口可用 */
printf("端口 %d 可用\n", port);
}
return 0;
}
```
该程序将连接到指定的主机并尝试连接到指定的端口,如果连接成功,说明端口可用;否则说明端口不可用。请注意,这只是一个简单的端口扫描程序,不应该在没有合法授权的情况下使用。