在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”。

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