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

南笙酒味 提交于 2020-02-23 14:42:12

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);

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!