TCP和UDP的区别及socket网络编程步骤

TCP和UDP的区别

1.连接

  TCP是面向连接的传输层协议,即传输数据之前必须先建立好连接。

  UDP无连接。

2. 服务对象

  TCP是点对点的两点间服务,即一条TCP连接只能有两个端点;

  UDP支持一对一,一对多,多对一,多对多的交互通信。

3.可靠性

  TCP是可靠交付:无差错,不丢失,不重复,按序到达。

  UDP是尽最大努力交付,不保证可靠交付。

4.拥塞控制,流量控制

  TCP有拥塞控制和流量控制保证数据传输的安全性。

  UDP没有拥塞控制,网络拥塞不会影响源主机的发送效率。

5. 报文长度

  TCP是动态报文长度,即TCP报文长度是根据接收方的窗口大小和当前网络拥塞情况决定的。

  UDP面向报文,不合并,不拆分,保留上面传下来报文的边界。

6.首部开销

  TCP首部开销大,首部20个字节。

  UDP首部开销小,8字节。(源端口,目的端口,数据长度,校验和)

socket网络编程的步骤

1.基于TCP的socket:

  服务器端程序:

    ① 创建一个socket,用函数socket()

    ② 绑定IP地址、端口等信息到socket上,用函数bind()

    ③ 设置允许的最大连接数,用函数listen()

    ④ 接收客户端上来的连接,用函数accept()

    ⑤ 收发数据,用函数send()和recv(),或者read()和write()

    ⑥ 关闭网络连接close()

  客户端程序:

    ① 创建一个socket,用函数socket()

    ② 设置要连接的对方的IP地址和端口等属性

    ③ 连接服务器,用函数connect()

    ④ 收发数据,用函数send()和recv(),或read()和write()

    ⑤ 关闭网络连接close()

2.基于UDP的socket:

  服务器端流程

    ① 建立套接字文件描述符,使用函数socket(),生成套接字文件描述符。

    ② 设置服务器地址和侦听端口,初始化要绑定的网络地址结构。

    ③ 绑定侦听端口,使用bind()函数,将套接字文件描述符和一个地址类型变量进行绑定。

    ④ 接收客户端的数据,使用recvfrom()函数接收客户端的网络数据。

    ⑤ 向客户端发送数据,使用sendto()函数向服务器主机发送数据。

    ⑥ 关闭套接字,使用close()函数释放资源。UDP协议的客户端流程

  客户端流程

    ① 建立套接字文件描述符,socket()

    ② 设置服务器地址和端口,struct sockaddr。

    ③ 向服务器发送数据,sendto()

    ④ 接收服务器的数据,recvfrom()

    ⑤ 关闭套接字,close()

 

posted @ 2019-10-14 20:24  一场雨  阅读(1513)  评论(0编辑  收藏  举报