📄 tcp_server.c
字号:
/* * Description: * tcp server example * tcp echo server: listen tcp port 4000, and echo back the received data. * * What is shown in this example: * 1. How to program a tcp echo server * */#include <stdio.h>#include <errno.h>#include <sys/socket.h>#include <arpa/inet.h>#include <netinet/in.h>intmain(argc, argv) int argc; char *argv[];{ int fd_listen, fd_client, size, ret; struct sockaddr_in dest; char buf[1024]; /*create a socket*/ fd_listen = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); if (fd_listen < 0) { printf("socket failed\n"); return 0; } /*use bind function to associate an address with a socket*/ bzero(&dest, sizeof(dest)); dest.sin_family = AF_INET; dest.sin_port = htons(4000); dest.sin_addr.s_addr = htonl(INADDR_ANY); bind(fd_listen, (struct sockaddr*)&dest, sizeof(dest)); /*listen 1 connect request*/ listen(fd_listen, 1); size = sizeof(dest); /*retrieve a connect request*/ fd_client = accept(fd_listen, (struct sockaddr*)&dest, &size); if (fd_client == -1) { printf("accept failed, errno: %d\r\n", errno); close(fd_listen); return 0; } printf("accept: %s, port %d\r\n", inet_ntoa(dest.sin_addr), htons(dest.sin_port)); while(1) { /*when data received, send them back*/ ret = recv(fd_client, buf, sizeof(buf), 0); if (ret > 0) { send(fd_client, buf, ret, 0); } else if (ret == 0) { printf("disconnect by remote\r\n"); break; } else if (ret < 0) { printf("read from ethernet failed, errno: %d\r\n", errno); break; } } close(fd_listen); close(fd_client); return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -