ceacer 2 已发布 1月29号 分享 已发布 1月29号 在Linux中,Socket 5通常指的是使用TCP/IP协议栈的第五版网络协议 首先,确保你的服务器已经安装了必要的库和头文件。在大多数Linux发行版中,你可以使用以下命令安装所需的库: sudo apt-get install libncurses5-dev 创建一个名为server.c的C文件,并在其中编写以下代码: #include #include #include #include #include #include #include #define PORT 8080 #define BUFFER_SIZE 1024 int 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 #include #include #include #include #include #include #define PORT 8080 #define BUFFER_SIZE 1024 int 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 当客户端运行时,它将向服务器发送一条消息,然后等待并接收服务器的响应。你应该会在服务器端看到客户端发送的消息,并在客户端看到服务器的响应。 评论链接 在其他网站上分享 更多分享选项...
推荐帖
创建账户或登录以发表评论
您需要成为会员才能发表评论
创建一个帐户
在我们的社区注册一个新账户。很简单!
注册新账户登入
已有账户?在此登录
立即登录