c++socket服务器代码
时间: 2023-05-18 16:02:35 浏览: 66
以下是一个简单的 C socket 服务器代码示例:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#include <unistd.h>
#define BUF_SIZE 1024
int main(int argc, char *argv[]) {
int server_socket, client_socket;
struct sockaddr_in server_addr, client_addr;
socklen_t client_addr_size;
char buf[BUF_SIZE];
if ((server_socket = socket(PF_INET, SOCK_STREAM, 0)) == -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(atoi(argv[1]));
if (bind(server_socket, (struct sockaddr *)&server_addr, sizeof(server_addr)) == -1) {
perror("bind error");
exit(1);
}
if (listen(server_socket, 5) == -1) {
perror("listen error");
exit(1);
}
while (1) {
client_addr_size = sizeof(client_addr);
client_socket = accept(server_socket, (struct sockaddr *)&client_addr, &client_addr_size);
if (client_socket == -1) {
perror("accept error");
continue;
}
while (1) {
memset(buf, 0, BUF_SIZE);
if (read(client_socket, buf, BUF_SIZE) == -1) {
perror("read error");
break;
}
if (strcmp(buf, "quit\n") == 0) {
break;
}
printf("Received message: %s", buf);
if (write(client_socket, buf, strlen(buf)) == -1) {
perror("write error");
break;
}
}
close(client_socket);
}
close(server_socket);
return 0;
}
```
这是一个简单的 TCP socket 服务器代码,它可以监听指定的端口并接受客户端连接。当客户端连接成功后,服务器会不断接收客户端发送的消息并将其原样返回给客户端,直到客户端发送 "quit" 为止。