c语言怎么编程联机

时间:2025-01-25 06:27:03 网络游戏

在C语言中实现联机功能,通常需要使用 套接字(Socket)编程。以下是一个简单的C语言TCP客户端和服务器端示例,展示如何使用套接字进行联机通信。

TCP服务器端示例

```c

include

include

include

include

include

include

include

define PORT 1500

define BUFFER_SIZE 1024

int main() {

int server_fd, new_socket;

struct sockaddr_in address;

int addrlen = sizeof(address);

char buffer[BUFFER_SIZE] = {0};

char *message = "Hello from server!";

// 创建套接字

if ((server_fd = socket(AF_INET, SOCK_STREAM, 0)) == 0) {

perror("socket failed");

exit(EXIT_FAILURE);

}

// 绑定套接字

address.sin_family = AF_INET;

address.sin_addr.s_addr = INADDR_ANY;

address.sin_port = htons(PORT);

if (bind(server_fd, (struct sockaddr *)&address, sizeof(address)) < 0) {

perror("bind failed");

exit(EXIT_FAILURE);

}

// 监听连接

if (listen(server_fd, 3) < 0) {

perror("listen");

exit(EXIT_FAILURE);

}

// 接受连接

if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t *)&addrlen)) < 0) {

perror("accept");

exit(EXIT_FAILURE);

}

// 读取客户端发送的数据

read(new_socket, buffer, BUFFER_SIZE);

printf("Message from client: %s

", buffer);

// 向客户端发送消息

send(new_socket, message, strlen(message), 0);

printf("Message sent to client

");

// 关闭套接字

close(new_socket);

close(server_fd);

return 0;

}

```

TCP客户端示例

```c

include

include

include

include

include

include

include

define PORT 1500

define BUFFER_SIZE 1024

define SERVER_IP "127.0.0.1"

int main() {

int sock = 0;

struct sockaddr_in serv_addr;

char buffer[BUFFER_SIZE] = {0};

char *message = "Hello from client!";

// 创建套接字

if ((sock = socket(AF_INET, SOCK_STREAM, 0)) < 0) {

perror("socket");

exit(EXIT_FAILURE);

}

serv_addr.sin_family = AF_INET;

serv_addr.sin_port = htons(PORT);

// 将IP地址转换为二进制格式

if (inet_pton(AF_INET, SERVER_IP, &serv_addr.sin_addr) <= 0) {

perror("inet_pton");

exit(EXIT_FAILURE);

}

// 连接到服务器

if (connect(sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {

perror("connect");

exit(EXIT_FAILURE);

}

// 向服务器发送消息

send(sock, message, strlen(message), 0);

// 从服务器接收消息

read(sock, buffer, BUFFER_SIZE);

printf("Message from server: %s

", buffer);

// 关闭套接字

close(sock);

return 0;

}

```

编译和运行

编译

对于服务器端和客户端,使用以下命令分别编译