Linux网络编程常见面试题

      最后更新:2022-03-28 08:21:30 手机定位技术交流文章

      概述

      TCP和UDP是TCP/IP网络结构最初传输层的两个不同的通信议定书。

      • TCP: 转让控制协议,这是一个面向连通性的协议,为用户流程提供可靠的重复工作字节流,TCP集接口是字节流界面之一。
      • UDP 表示用户数据报告协议。 这是一个未连接的协议。 UDP 界面是数据集接口( 数据匹配) 之一 。

      TCP与UDP简介

      TCP客户-服务器程序设计的基本基础

      TCP流程

      设计UDP客户-服务器程序的基本基础

      UDP流程

      TCP对UDP

      • TCP面向连接(三种握手方法),在通信前需要连接;UDP断开,通信前不需要连接。
      • TCP确保可靠的传输(顺序、无错误、无损失、无重复、时间释放);UDP不保证可靠的传输,并尽一切努力提供。
      • TCP用于字节传输,而UDP用于数据报告。

      TCP优缺点:

      • 优点:
        1. TCP允许以安全的方式明确建立和终止连接。
        TCP确保数据传输是可靠的、相继的(按交付的顺序接收数据包)和不重复的。
        3. 控制TCP治疗的流动。
        4.允许数据优先
        如果没有发送数据, TCP 设置的接口将返回错误状态条件。
        6. TCP通过保持连续性并将其破碎成小块处理巨大的数据块。 - 程序员不需要了解这一点。

      • 缺点:在发送数据时,TCP必须建立(并保持)连接。这种连接增加了通信过程的费用,比UDP慢。

      UDP优缺点:

      1. 联合民主党不需要连接。
      2. 由于接收人接受包件的接收(或者如果包件抵达时未正确,包件自动重新发送),UDP没有支付任何费用。
      联合民主党协议是为短期应用和信息管理创建的。
      联合DP使用的网络带宽低于基于数据包所附数据包的TDP所需的网络带宽。

      TCP/IP应用程序编程接口(API)

      • TCP服务端:

      • TCP客户端:

        #include <stdlib.h>
        #include <stdio.h>
        #include <errno.h>
        #include <string.h>
        #include <netdb.h>
        #include <sys/types.h>
        #include <sys/socket.h>
        #include <netinet/in.h>

        #define PORT 2345
        #define DSET_IP_ADDRESS “192.168.218.141”

        int main(int argc, char *argv[])
        {
        int sockfd;
        char buffer[1024];
        struct sockaddr_in server_addr;

        ");
        fgets(buffer,1024,stdin);
        write(sockfd,buffer,strlen(buffer));

        }

      • UDP服务端:

        #include<stdio.h>

        include<sys/types.h>

        #include<sys/socket.h>
        #include<netinet/in.h>
        #include<unistd.h>
        #include<errno.h>
        #include<string.h>
        #include<stdlib.h>

        #define SERV_PORT 3000

        int main(int argc, char *argv[])
        {
        /按钮描述符号 insock_fd;
        int recv_num;
        int send_num;
        int client_len;
        char recv_buf[20];
        struct sockaddr_in addr_serv;
        adr_client;/ server 和客户端地址

        ");
        }

        ");
        }

        ");
        recv_num = recvfrom(sock_fd,recv_buf,sizeof(recv_buf),0,(struct sockaddr *)&addr_client,&client_len);
        if(recv_num < 0){
        printf("bad
        ");
        perror(“again recvfrom”);
        exit(1);
        } else{
        recv_buf[recv_num]=’’;
        printf("recv sucess:%s
        ",recv_buf);
        }
        printf("begin send:
        ");
        send_num = sendto(sock_fd,recv_buf,recv_num,0,(struct sockaddr *)&addr_client,client_len);
        if(send_num < 0){
        perror(“sendto”);
        exit(1);
        } else{
        printf("send sucessful
        ");
        }
        }
        close(sock_fd);

        }

      • UDP客户端:

        #include<stdio.h>
        #include<string.h>
        #include<errno.h>
        #include<stdlib.h>
        #include<unistd.h>

        #include<sys/types.h>
        #include<sys/socket.h>
        #include<netinet/in.h>

        #define DEST_PORT 3000
        #define DSET_IP_ADDRESS “192.168.1.103”

        int main(int argc, char *argv[])
        {
        int sock_fd;/套接字文件描述符/
        int send_num;
        int recv_num;
        int dest_len;
        char send_buf[20]={“hello tiger”};
        char recv_buf[20];
        struct sockaddr_in addr_serv;/客户地址、服务地址/

        ");
        send_num = sendto(sock_fd,send_buf,sizeof(send_buf),0,(struct sockaddr *)&addr_serv,dest_len);
        if(send_num < 0){
        perror(“sendto”);
        exit(1);
        } else{
        printf("send sucessful:%s
        ",send_buf);
        }

        ");
        recv_buf[recv_num]=’’;
        printf("the receive:%s
        ",recv_buf);
        }

        }

      参考:

      • 演示了基于索克特的UDP和TCP方案规划。
      • TCP 字节流和UDP数据流报告
      • 网络面试试题

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/20990.html

          热门文章

          文章分类