zoukankan      html  css  js  c++  java
  • 创建一个简单的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来检查。

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

  • 相关阅读:
    使用Python Falsk-Mail 发送邮件
    Python反射
    Python类的特殊成员方法
    Python静态方法、类方法、属性方法
    Python面向对象三大特性(封装、继承、多态)
    Python之面向对象
    Python标准库之re模块
    Python标准库之logging模块
    Python标准库之subprocess模块
    Python标准库之hashlib模块与hmac模块
  • 原文地址:https://www.cnblogs.com/kunshanpipixia/p/13473103.html
Copyright © 2011-2022 走看看