IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Linux Socket 学习笔记13-TCP/IP协议实现的客户端

    Qiang发表于 2009-07-29 12:32:22
    love 0

    要基于TCP/IP协议进行通信,客户端需要进行以下几个步骤:

    1. 建立套接口。
    2. 连接到服务器。
    3. 进行通讯。
    4. 关闭连接。

    其中进行通讯使用read(2)和write(2)函数。

    下面这段客户端的代码与服务器进行通讯,取得服务器时间。用到的服务为daytime,端口号为13,使用的协议为TCP/IP协议。

    ?View Code C
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    
    /* daytime.c:
     * Example daytime client :
     */
    #include 
    #include 
    #include 
    #include 
    #include 
    #include types.h><span>
    #include socket.h><span>
    #include in.h><span>
    #include inet.h><span>
    #include 
     
    static void
    bail(const char *on_what) {
     fputs(strerror(errno),stderr);
     fputs(": ",stderr);
     fputs(on_what,stderr);
     fputc('\n',stderr);
     exit(1);
    }
     
    int
    main(int argc,char **argv) {
     int z;
     struct sockaddr_in adr_srvr;/* AF_INET */
     int len_inet;               /* length  */
     int s;                       /* Socket */
     char dtbuf[128];     /* Date/Time info */
     /*
     * Create a server socket address:
     */
     memset(&amp;adr_srvr,0,sizeof adr_srvr);
     adr_srvr.sin_family = AF_INET;
     adr_srvr.sin_port = htons(13);
     adr_srvr.sin_addr.s_addr =
     inet_addr("127.0.0.1");
     
     len_inet = sizeof adr_srvr;
     
     /*
     * Create a TDP/IP socket to use :
     */
     s = socket(PF_INET,SOCK_STREAM,0);
     if ( s == -1 )
     bail("socket()");
     
     /*
     * Connect to the server:
     */
     z = connect(s,&amp;adr_srvr,len_inet);
     if ( z == -1 )
     bail("connect(2)");
     
     /*
     * Read the date/time info:
     */
     z = read(s,&amp;dtbuf,sizeof dtbuf-1);
     if ( z == -1 )
     bail("read(2)");
     
     /*
     * Report the Date & Time :
     */
     dtbuf[z] = 0;   /* null terminate string */
     
     printf("Date & Time is: %s\n",dtbuf);
     
     /*
     * Close the socket and exit:
     */
     close(s);
     
     return 0;
    }


沪ICP备19023445号-2号
友情链接