• 网络编程模型及TCP、UDP编程设计


    1.Linux网络模型

    Linux网络编程--->>>socket套接字的编程

    2.TCP网络模型                                                    UDP网络模型                               

    在创建套接字后,服务器与客户端都得初始化网络地址

    3.网络编程

    服务器端:

    //1.1创建socket
        if((sockfd = socket(AF_INET, SOCK_STREAM, 0))<0)  //IPv4,用于TCP通信
    {perror("socket error!");exit(-1);} //确保连接稳定性
    //1.2绑定地址 /*初始化地址*/ bzero(&server_addr,sizeof(struct sockaddr_in));//清零 server_addr.sin_family = AF_INET;//协议族 server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
    //跟随网络传输 sin_addr中的成员s_addr 任意ip地址 字节序转换 主机转换为网络字节序 server_addr.sin_port = htons(port);//端口,跟随网络传输 /*绑定地址*/ if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))<0);
    //要绑定的地址 地址长度
    {perror("bind error!");exit(-1);} //确保连接稳定性
    //1.3监听端口
    if(listen(sockfd,5)<0); //客户机数目
    {perror("listen error!");exit(-1);}
    //1.4等待连接
    while(1)
    { new_fd = accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size);
    //client_addr保存客户端地址 长度的指针
    //2.响应客户端请求    
            while(1)     //接收和发送数据  fd与new_fd之间的调序使用
            {
    read(~)=recv(~,0) 读/接收数据
    write(~)=send(~,0) 写/发送数据
    //read(new_fd,&cmd,1); //读取操作类型码 //write(~~) } close(sockfd); }

    客户端:    实际编程过程中确保稳定连接,配上故障信息

    //1.创建socket
        sockfd = socket(AF_INET, SOCK_STREAM, 0);  //IPv4,用于TCP通信
    /*2.1 初始化地址*/
        memset(&sockaddr1,0,sizeof(sockaddr1));//清零
        sockaddr1.sin_family      = AF_INET;//协议族
        sockaddr1.sin_addr.s_addr = inet_addr(ipaddr);// 跟随网络传输 sin_addr中的成员s_addr inet_addr:将字符串ip地址转换为整数型ip地址
        sockaddr1.sin_port        = htons(port);//端口,跟随网络传输,字节序转换 主机转换为网络字节序
    //2.连接服务器    
        connect(sockfd,(struct sockaddr *)&sockaddr1,sizeof(sockaddr1));
    //3.发送或接收数据
    while(1)
        {
           command = getchar();    //等待用户输入字符 
            switch(command)
            {1.发送-2.接收-3.退出-quit()}
         }
    //4.关闭连接
        close(sockfd);
  • 相关阅读:
    SPI 1
    运算符
    移位运算
    Comet OJ
    图论 最短路 基础
    CF div3 582 C. Book Reading
    Comet OJ
    VScode 标记“&&”不是此版本中的有效语句分隔符。
    Educational Codeforces Round 63 (Rated for Div. 2)
    1223:An Easy Problem
  • 原文地址:https://www.cnblogs.com/hjh-666/p/11207934.html
Copyright © 2020-2023  润新知