在Linux中,Socket 5通常指的是使用TCP/IP协议栈的第五版网络协议
- 首先,确保你的服务器已经安装了必要的库和头文件。在大多数Linux发行版中,你可以使用以下命令安装所需的库:
sudo apt-get install libncurses5-dev- 创建一个名为
server.c的C文件,并在其中编写以下代码:#include <arpa/inet.h>#include <netinet/in.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/socket.h>#include <unistd.h>#define PORT 8080#define BUFFER_SIZE 1024int main() {int server_fd, client_fd, addr_len;struct sockaddr_in server_addr, client_addr;char buffer[BUFFER_SIZE];// 创建套接字if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {perror("socket failed");exit(EXIT_FAILURE);}// 配置服务器地址结构体server_addr.sin_family = AF_INET;server_addr.sin_addr.s_addr = INADDR_ANY;server_addr.sin_port = htons(PORT);// 绑定套接字if (bind(server_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {perror("bind failed");exit(EXIT_FAILURE);}// 监听连接if (listen(server_fd, 3) < 0) {perror("listen");exit(EXIT_FAILURE);}addr_len = sizeof(client_addr);// 接受客户端连接if ((client_fd = accept(server_fd, (struct sockaddr *)&client_addr, (socklen_t *)&addr_len)) < 0) {perror("accept");exit(EXIT_FAILURE);}// 读取并输出客户端发送的数据read(client_fd, buffer, BUFFER_SIZE);printf("Client message: %s\n", buffer);// 向客户端发送数据send(client_fd, "Hello from server!", strlen("Hello from server!"), 0);printf("Message sent to client\n");// 关闭套接字close(client_fd);close(server_fd);return 0;}- 使用以下命令编译C文件:
gcc server.c -o server- 在后台运行编译后的服务器程序:
./server &现在,你的服务器已经在监听端口8080上的连接。当客户端连接到服务器时,服务器将读取客户端发送的消息,并向客户端发送一条响应消息。
要测试这个服务器,你可以创建一个名为client.c的C文件,并在其中编写以下代码:
#include <arpa/inet.h>#include <netinet/in.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include <sys/socket.h>#include <unistd.h>#define PORT 8080#define BUFFER_SIZE 1024int main() {int client_fd;struct sockaddr_in server_addr;char buffer[BUFFER_SIZE] = {0};// 创建套接字if ((client_fd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {perror("socket");exit(EXIT_FAILURE);}// 配置服务器地址结构体server_addr.sin_family = AF_INET;server_addr.sin_port = htons(PORT);if (inet_pton(AF_INET, "127.0.0.1", &server_addr.sin_addr) <= 0) {perror("inet_pton");exit(EXIT_FAILURE);}// 连接到服务器if (connect(client_fd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {perror("connect");exit(EXIT_FAILURE);}// 向服务器发送数据send(client_fd, "Hello from client!", strlen("Hello from client!"), 0);printf("Message sent to server\n");// 读取并输出服务器发送的数据read(client_fd, buffer, BUFFER_SIZE);printf("Server message: %s\n", buffer);// 关闭套接字close(client_fd);return 0;}编译并运行客户端程序:
gcc client.c -o client./client当客户端运行时,它将向服务器发送一条消息,然后等待并接收服务器的响应。你应该会在服务器端看到客户端发送的消息,并在客户端看到服务器的响应。
上一篇:linux netplan对虚拟机网络有用吗
下一篇:linux storage能否共享存储资源
Linux









