创建一个简单的TCP服务器

本文设置一个简单的TCP服务器。

服务器的七大阶段:socket,bind,listen,accept,recv,send,close。服务器使用此7个同名函数来进行连接,监听,读写,关闭等动作。如下为man配置的API函数信息。

需要额外注意bind和accept的相应成员变量的强制类型转换。

1.socket

2.bind

3.listen

 

4.accept

 

5.recv

 

6.send

 

7.close

附加1.sockaddr_in结构体成员(使用  :!man 7 ip  命令查看)

  

如下为代码:

 1 #include <stdlib.h>
 2 #include <string.h>
 3 #include <pthread.h>
 4 #include <unistd.h>
 5 #include <errno.h>
 6 #include <sys/socket.h>
 7 #include <arpa/inet.h>
 8 #include <ctype.h>
 9 #define len 1024
10 int main(int argc, char* argv[])
11 {
12     int fuwuqi_socket_fd1,accept_fd;
13     char s[len]={0,};
14     fuwuqi_socket_fd1=socket(AF_INET,SOCK_STREAM,0);
15 
16     struct sockaddr_in fuwuqi;
17     fuwuqi.sin_family=AF_INET;
18     fuwuqi.sin_port=htons(12345);
19     fuwuqi.sin_addr.s_addr=inet_addr("192.168.25.128"); 
20 
21     bind(fuwuqi_socket_fd1,(struct sockaddr *)&fuwuqi,sizeof(fuwuqi));
22 
23     listen(fuwuqi_socket_fd1,1000);
24 
25     struct sockaddr_in client;
26     socklen_t clientaddr_len=sizeof(struct sockaddr);
27     accept_fd=accept(fuwuqi_socket_fd1,(struct sockaddr *)&client,&clientaddr_len);
28 
29     
30     for(;;)
31     {
32         int ret=recv(accept_fd,(void*)s,len,0);
33         if(ret==0)
34         {
35             break;
36         }
37         printf("%x",s);
38         send(accept_fd,(void*)s,len,0);
39     }
40     close(accept_fd);
41 close(fuwuqi_socket_fd1);
42 return 0;
43 }

编译运行。再另外开一个终端,使用nc -l 12345来检查。

结果如下,证明服务器通信成功!

原文地址:https://www.cnblogs.com/kunshanpipixia/p/13473103.html