創建一個簡單的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來檢查。

結果如下,證明服務器通信成功!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM