以下是一个简单的C语言服务器程序示例,这个服务器使用TCP协议进行通信,可以接收客户端的连接并响应简单的消息。
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <arpa/inet.h> #define PORT 8080 #define BUFFER_SIZE 1024 void handle_client(int client_socket) { char buffer[BUFFER_SIZE]; ssize_t bytes_read; // 清空缓冲区 memset(buffer, 0, BUFFER_SIZE); // 从客户端读取数据 while ((bytes_read = read(client_socket, buffer, BUFFER_SIZE)) > 0) { printf("Received from client: %s ", buffer); // 将收到的消息回传给客户端 send(client_socket, buffer, bytes_read, 0); // 清空缓冲区 memset(buffer, 0, BUFFER_SIZE); } // 如果读取失败或客户端关闭连接 if (bytes_read == 0 || bytes_read == -1) { printf("Client disconnected or error occurred. "); } // 关闭客户端套接字 close(client_socket); } int main() { int server_socket, client_socket; struct sockaddr_in server_address; socklen_t address_length = sizeof(server_address); // 创建套接字 server_socket = socket(AF_INET, SOCK_STREAM, 0); if (server_socket == -1) { perror("Socket creation failed"); exit(EXIT_FAILURE); } // 绑定地址和端口到套接字 server_address.sin_family = AF_INET; server_address.sin_addr.s_addr = INADDR_ANY; // 监听所有网络接口 server_address.sin_port = htons(PORT); if (bind(server_socket, (struct sockaddr*)&server_address, sizeof(server_address)) == -1) { perror("Bind failed"); close(server_socket); exit(EXIT_FAILURE); } // 开始监听连接请求 if (listen(server_socket, 5) == -1) { perror("Listen failed"); close(server_socket); exit(EXIT_FAILURE); } printf("Server listening on port %d... ", PORT); // 接受客户端连接请求并处理 while ((client_socket = accept(server_socket, (struct sockaddr*)&server_address, &address_length))) { if (client_socket == -1) { perror("Accept failed"); continue; } printf("Connection accepted from client. "); // 处理客户端请求 handle_client(client_socket); } // 关闭服务器套接字 close(server_socket); return 0; }
代码解释:
1、头文件包含:
stdio.h
:标准输入输出库。
stdlib.h
:标准库(用于内存分配、控制进程等)。
string.h
:字符串操作函数库。
unistd.h
:POSIX操作系统API。
arpa/inet.h
:定义了IPv4和IPv6的地址结构及函数。
2、常量定义:
PORT
:服务器监听的端口号。
BUFFER_SIZE
:缓冲区大小。
3、处理客户端请求的函数:
handle_client(int client_socket)
:负责与客户端通信,读取客户端发送的数据并将其回传。
4、主函数:
创建一个套接字。
设置套接字选项,使其能够重用地址。
绑定套接字到指定的端口和地址。
开始监听客户端连接请求。
接受客户端连接并调用handle_client
函数处理客户端请求。
关闭服务器套接字。
编译和运行:
假设文件名为server.c
,可以使用以下命令编译和运行:
gcc -o server server.c ./server
这样,服务器将会在端口8080上监听客户端连接请求。
以上内容就是解答有关“服务器c程序代码”的详细内容了,我相信这篇文章可以为您解决一些疑惑,有任何问题欢迎留言反馈,谢谢阅读。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/754983.html