在C语言中,服务器和客户端的运行通常涉及到套接字编程,以下是一个简单的示例,展示了如何使用C语言编写一个基于TCP协议的服务器和客户端。

(图片来源网络,侵删)
1、服务器端代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h> #define BUF_SIZE 1024 #define PORT 8888 int main() { int server_sock, client_sock; struct sockaddr_in server_addr, client_addr; socklen_t client_addr_size; char buffer[BUF_SIZE]; server_sock = socket(PF_INET, SOCK_STREAM, 0); if (server_sock == 1) { perror("socket error"); exit(1); } memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = htonl(INADDR_ANY); server_addr.sin_port = htons(PORT); if (bind(server_sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) == 1) { perror("bind error"); exit(1); } if (listen(server_sock, 5) == 1) { perror("listen error"); exit(1); } client_addr_size = sizeof(client_addr); client_sock = accept(server_sock, (struct sockaddr *)&client_addr, &client_addr_size); if (client_sock == 1) { perror("accept error"); exit(1); } while (1) { ssize_t recv_len = recv(client_sock, buffer, BUF_SIZE 1, 0); if (recv_len == 1) { perror("recv error"); break; } else if (recv_len == 0) { break; } buffer[recv_len] = ' '; printf("Received message: %s ", buffer); } close(client_sock); close(server_sock); return 0; }
2、客户端代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #include <sys/socket.h> #define BUF_SIZE 1024 #define SERVER_IP "127.0.0.1" #define SERVER_PORT 8888 int main() { int client_sock; struct sockaddr_in server_addr; char buffer[BUF_SIZE]; client_sock = socket(PF_INET, SOCK_STREAM, 0); if (client_sock == 1) { perror("socket error"); exit(1); } memset(&server_addr, 0, sizeof(server_addr)); server_addr.sin_family = AF_INET; server_addr.sin_addr.s_addr = inet_addr(SERVER_IP); server_addr.sin_port = htons(SERVER_PORT); if (connect(client_sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) == 1) { perror("connect error"); exit(1); } while (1) { printf("Input message to send: "); fgets(buffer, BUF_SIZE, stdin); if (!strcmp(buffer, "q ") || !strcmp(buffer, "Q ")) { break; } send(client_sock, buffer, strlen(buffer), 0); } close(client_sock); return 0; }
要运行这些代码,首先编译它们,然后分别运行服务器端和客户端,使用gcc编译器:
gcc server.c o server gcc client.c o client
然后运行服务器和客户端:
./server ./client
在客户端输入消息,服务器将接收并显示这些消息,要结束程序,可以在客户端输入“q”或“Q”。

(图片来源网络,侵删)
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复