用c语言编写五子棋游戏客户端和服务端代码
时间: 2023-11-01 13:07:36 浏览: 84
用C语言写的五子棋游戏代码
以下是一个基本的五子棋游戏客户端和服务端的 C 语言代码示例:
服务端代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#define DEFAULT_PORT 8888
#define MAXLINE 1024
int main(int argc, char *argv[]) {
int serv_sock, clnt_sock;
struct sockaddr_in serv_addr, clnt_addr;
char buf[MAXLINE];
int str_len, i;
socklen_t clnt_addr_size;
if ((serv_sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket error");
exit(1);
}
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_addr.sin_port = htons(DEFAULT_PORT);
if (bind(serv_sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) == -1) {
perror("bind error");
exit(1);
}
if (listen(serv_sock, 5) == -1) {
perror("listen error");
exit(1);
}
clnt_addr_size = sizeof(clnt_addr);
if ((clnt_sock = accept(serv_sock, (struct sockaddr*)&clnt_addr, &clnt_addr_size)) == -1) {
perror("accept error");
exit(1);
}
while (1) {
str_len = read(clnt_sock, buf, MAXLINE);
if (str_len == -1) {
perror("read error");
exit(1);
}
if (str_len == 0) {
break;
}
write(clnt_sock, buf, str_len);
}
close(clnt_sock);
close(serv_sock);
return 0;
}
```
客户端代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#define DEFAULT_PORT 8888
#define MAXLINE 1024
int main(int argc, char *argv[]) {
int sock;
struct sockaddr_in serv_addr;
char buf[MAXLINE];
int str_len;
if ((sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
perror("socket error");
exit(1);
}
memset(&serv_addr, 0, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_addr.s_addr = inet_addr("127.0.0.1");
serv_addr.sin_port = htons(DEFAULT_PORT);
if (connect(sock, (struct sockaddr*)&serv_addr, sizeof(serv_addr)) == -1) {
perror("connect error");
exit(1);
}
while (1) {
printf("Input message(Q to quit): ");
fgets(buf, MAXLINE, stdin);
if (!strcmp(buf, "q\n") || !strcmp(buf, "Q\n")) {
break;
}
write(sock, buf, strlen(buf));
str_len = read(sock, buf, MAXLINE - 1);
buf[str_len] = 0;
printf("Message from server: %s", buf);
}
close(sock);
return 0;
}
```
这里只是一个简单的示例,如果你想要实现更完整的五子棋游戏,还需要在客户端和服务端之间添加更多的信息交换和逻辑处理。
阅读全文