• 基于TCP协议的客户端编程


    #include <netdb.h>
    #include <sys/socket.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <memory.h>
    #include <unistd.h>

    int main(int argc, char *argv[])
    {
        if (argc < 3)
        {
            printf("usage:%s ip port ",argv[0]);
            exit(1);
        }
        
        /*步骤1:创建socket*/
        int sockfd = socket(AF_INET,SOCK_STREAM,0)
        if (sockfd < 0)
        {
            perror("socket error");
            exit(1);
        }
        //往serveraddr中填入ip、port和地址族类型(ipv4)
        struct sockaddr_in serveradd;
        memset(&serveradd,0,sizeof(serveraddr));
        serveraddr.sin_family = AF_INET;
        serveraddr.sin_port = htons(atoi(argv[2]));
        //将ip地址转换成网络字节序后填入serveraddr中
        inet_pton(AF_INT,argv[1],&serveraddr.sin_addr.s_addr);
        
        /*  步骤2:客户端调用connect函数连接到服务器端*/
        if(connect(sockfd,(struct sockaddr*)&serveraddr,sizeof(serveraddr)) < 0  )
        {
           perror("connect error");
           exit(1);
        }    
        
        /*步骤3 : 调用IO函数(read/write)和服务器段进行双向通信*/
        char buffer[1024];
        memset(buffer,0,sizeof(buffer));
        size_t size;
        if((size = read(sockfd,buffer,sizeosf(buffer))) < 0  )
         {
            perror("read error");
         }    
         if(write(STDOT_FILENO,buffer,size) != size)
         {
            perror("write error");
         }
        
         /*步骤4 :关闭socket套接字*/
         close(sockfd);
        
        return 0;
    }




  • 相关阅读:
    「训练反思18」 (8.16) 认清自己
    「训练日志17」 (8.12) 崩盘
    「训练日志16」 8.11 下坠
    「训练日志15」 (8.10)
    「训练反思15」(8.10)
    「训练日志14 」(8.9) 失败
    训练日志13 (8.7)
    Linux 设置vim指令
    训练日志12 (8.5)
    训练反思12 (8.5)
  • 原文地址:https://www.cnblogs.com/lvdh1314/p/6479029.html
Copyright © 2020-2023  润新知