zoukankan      html  css  js  c++  java
  • 套接口编程理论基础:TCP回射客户程序

    main 函数:

    #include    "unp.h"

    int main(int argc, char **argv)
    {
    int sockfd;
    struct sockaddr_in servaddr;

    if (argc != 2)
    err_quit("usage: tcpcli <IPaddress>");

    /*Socket函数原型int socket (int family, int type, int protocol);protocol为0时
    ,以选择给定family和type组合的系统缺省值。参照 4.2节,
    */
    sockfd = Socket(AF_INET, SOCK_STREAM, 0);

    bzero(&servaddr, sizeof(servaddr));
    servaddr.sin_family = AF_INET;
    /*考虑主机字节序和网络字节间的相互转换。参照3.4节*/
    servaddr.sin_port = htons(SERV_PORT);
    /*地址转换函数inet_pton(int, const char *, void *):将点分十进制IPv4地址转化成32位二进制IPv4地址。3.7节*/
    Inet_pton(AF_INET, argv[1], &servaddr.sin_addr);

    /*建立与服务器的连接*/
    Connect(sockfd, (SA *) &servaddr, sizeof(servaddr));

    str_cli(stdin, sockfd); /* do it all */

    exit(0);
    }

    str_cli 函数:

      本函数完成客户处理循环:从标准输入读入一行文本,写到服务器上;读入服务器对该行文本的回射,并把回射行写到标准输出上。

    #include    "unp.h"

    void
    str_cli(FILE *fp, int sockfd)
    {
    char sendline[MAXLINE], recvline[MAXLINE];

    /*fgets 读入一行文本*/
    while (Fgets(sendline, MAXLINE, fp) != NULL) {
    /*把该行文本发送给服务器*/
    Writen(sockfd, sendline, strlen(sendline));

    /*readline从服务器读入回射行*/
    if (Readline(sockfd, recvline, MAXLINE) == 0)
    err_quit("str_cli: server terminated prematurely");
    /*fputs 把回射行写到标准输出上*/
    Fputs(recvline, stdout);
    }
    }




  • 相关阅读:
    python一些简单操作
    MySQL事务
    c#替换word中的文本并导出(示例)
    SQLServer将某个字段的多行记录合并返回一行
    SQL根据某字段查询不重复记录
    SQLServer逗号分割字符串返回多行
    c# js日期工具
    onchange,onfocus ,oninput事件
    compositionstart事件与compositionend事件
    图片处理问题
  • 原文地址:https://www.cnblogs.com/polestar/p/2405592.html
Copyright © 2011-2022 走看看