Linux中使用C语言写一个客户端发送消息并显示在返回在服务器中,并且添加注释
时间: 2023-05-25 21:02:27 浏览: 53
A:下面是一个使用C语言编写的Linux客户端,可用于向服务器发送消息并在服务器端显示返回消息。代码中也包含有注释,以便更好地理解。
```
/* 客户端程序 */
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#define MAX_MSG_SIZE 1024 // 消息的最大长度
#define SERVER_PORT 8000 // 服务器端口号
#define SERVER_IP "127.0.0.1" // 服务器IP地址
int main()
{
int client_sockfd; // 客户端套接字文件描述符
struct sockaddr_in server_addr; // 服务器地址结构体
char message[MAX_MSG_SIZE]; // 存储消息
char recv_msg[MAX_MSG_SIZE]; // 存储接收到的消息
// 创建客户端套接字
if ((client_sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
perror("socket() error");
exit(EXIT_FAILURE);
}
// 设置服务器地址信息
memset(&server_addr, 0, sizeof(server_addr));
server_addr.sin_family = AF_INET; // IPv4地址
server_addr.sin_port = htons(SERVER_PORT); // 设置端口号
server_addr.sin_addr.s_addr = inet_addr(SERVER_IP); // 设置IP地址
// 连接服务器
if (connect(client_sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {
perror("connect() error");
exit(EXIT_FAILURE);
}
printf("Connected to server %s:%d ...\n", SERVER_IP, SERVER_PORT);
// 发送消息
printf("Please enter your message: ");
fgets(message, MAX_MSG_SIZE, stdin); // 获取用户输入的消息
message[strlen(message) - 1] = '\0'; // 去掉消息末尾的换行符
// 向服务器发送消息
if (send(client_sockfd, message, strlen(message), 0) < 0) {
perror("send() error");
exit(EXIT_FAILURE);
}
printf("Message sent successfully. Waiting for server's response...\n");
// 接收服务器的返回消息
if (recv(client_sockfd, recv_msg, MAX_MSG_SIZE, 0) < 0) {
perror("recv() error");
exit(EXIT_FAILURE);
}
printf("Server response: %s\n", recv_msg);
// 关闭套接字
close(client_sockfd);
return 0;
}
```
代码中使用了socket()、connect()、send()和recv()等Linux系统调用函数来实现客户端和服务器之间的通信。其中,socket()用于创建客户端套接字,connect()用于连接服务器,send()用于向服务器发送消息,recv()用于接收服务器的返回消息。
在代码中,首先定义了消息的最大长度、服务器的端口号和IP地址等常量。其次,使用socket()函数创建客户端套接字,并设置服务器地址信息。接着,使用connect()函数连接服务器。
在连接成功后,程序会提示用户输入消息,用户在控制台中输入要发送的消息,并使用send()函数将消息发送给服务器。然后,程序会等待服务器的返回消息,使用recv()函数接收服务器的消息,并将其打印在控制台上。最后,程序关闭套接字并返回0。