C++ tcp server 例子
时间: 2023-08-28 08:06:16 浏览: 137
好的,以下是一个简单的C语言TCP服务器的例子:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#define BUF_SIZE 1024
int main(int argc, char *argv[])
{
int serv_sock, clnt_sock;
char buf[BUF_SIZE];
int read_cnt;
struct sockaddr_in serv_adr, clnt_adr;
socklen_t clnt_adr_sz;
if(argc != 2) {
printf("Usage: %s <port>\n", argv[0]);
exit(1);
}
serv_sock = socket(AF_INET, SOCK_STREAM, 0);
memset(&serv_adr, 0, sizeof(serv_adr));
serv_adr.sin_family = AF_INET;
serv_adr.sin_addr.s_addr = htonl(INADDR_ANY);
serv_adr.sin_port = htons(atoi(argv[1]));
if(bind(serv_sock, (struct sockaddr*)&serv_adr, sizeof(serv_adr)) == -1)
perror("bind() error");
if(listen(serv_sock, 5) == -1)
perror("listen() error");
clnt_adr_sz = sizeof(clnt_adr);
clnt_sock = accept(serv_sock, (struct sockaddr*)&clnt_adr, &clnt_adr_sz);
while(1) {
read_cnt = read(clnt_sock, buf, BUF_SIZE);
if(read_cnt == 0)
break;
write(clnt_sock, buf, read_cnt);
}
close(clnt_sock);
close(serv_sock);
return 0;
}
```
此例子中,我们使用了 socket 函数创建套接字,然后使用 bind 函数将套接字绑定到特定 IP 和端口上,接着我们使用 listen 函数来监听客户端连接。当有客户端请求连接时,我们使用 accept 函数接受客户端连接请求,并创建一个新的套接字进行通信。在通信过程中,我们使用 read 函数从套接字中读取数据,并使用 write 函数向套接字中写入数据。最后,我们关闭套接字并结束程序。
希望这个例子能够帮到你。
阅读全文
相关推荐















