#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <arpa/inet.h> #define TARGET_IP "192.168.1.100" // 蠕虫目标IP地址 #define TARGET_PORT 1234 // 蠕虫目标端口号 #define BUFFER_SIZE 1024 // 缓冲区大小 int main() { int sockfd, connfd; struct sockaddr_in servaddr, cliaddr; char buffer[BUFFER_SIZE]; char *msg = "Hello, World!"; // 创建套接字 sockfd = socket(AF_INET, SOCK_STREAM, 0); // 设置服务器地址 memset(&servaddr, 0, sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = inet_addr(TARGET_IP); servaddr.sin_port = htons(TARGET_PORT); // 连接目标机器 connfd = connect(sockfd, (struct sockaddr *)&servaddr, sizeof(servaddr)); // 发送消息 send(connfd, msg, strlen(msg), 0); // 接收消息 recv(connfd, buffer, BUFFER_SIZE, 0); // 关闭连接 close(connfd); close(sockfd); return 0; }
时间: 2023-06-14 22:08:24 浏览: 107
这是一个基本的C语言程序,用于通过TCP连接向指定IP地址和端口号发送消息,并接收来自服务器的回复消息。
具体实现步骤如下:
1. 引用所需的头文件:stdio.h、stdlib.h、string.h、unistd.h、sys/socket.h、arpa/inet.h。
2. 定义常量 TARGET_IP 和 TARGET_PORT,分别为蠕虫目标IP地址和端口号。
3. 定义 BUFFER_SIZE 常量,表示缓冲区大小。
4. 声明主函数。
5. 声明 sockfd 和 connfd 两个变量,分别表示套接字和连接。
6. 声明 servaddr 和 cliaddr 两个结构体变量,分别表示服务器地址和客户端地址。
7. 声明 buffer 数组,用于存储接收到的消息。
8. 声明 msg 变量,用于存储要发送的消息。
9. 创建套接字,使用 socket 函数,指定协议族为 AF_INET,类型为 SOCK_STREAM,协议为 0。
10. 设置服务器地址,使用 memset 函数将 servaddr 清零,然后设置协议族为 AF_INET,IP地址为 TARGET_IP,端口号为 TARGET_PORT。
11. 连接目标机器,使用 connect 函数,传入 sockfd、指向服务器地址的指针和服务器地址大小。
12. 发送消息,使用 send 函数,传入 connfd、msg 和 strlen(msg)。
13. 接收消息,使用 recv 函数,传入 connfd、buffer、BUFFER_SIZE 和 0。
14. 关闭连接,使用 close 函数,传入 connfd 和 sockfd。
15. 返回 0,表示程序执行完毕。
该程序适用于实现基本的C/S架构,可以在客户端向服务器发送请求并接收回复消息,也可以在服务器端接收客户端请求并回复消息。
阅读全文