zoukankan      html  css  js  c++  java
  • 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()

  • 相关阅读:
    如何构建微服务架构
    JVM内幕:Java虚拟机详解
    JVM 调优系列之图解垃圾回收
    干货:JVM 堆内存和非堆内存
    JavaWeb项目架构之NFS文件服务器
    SSH框架之-hibernate 三种状态的转换
    随笔聊架构
    如果不从事编程,我可以做什么?
    JAVA几种缓存技术介绍说明
    Java反射机制应用实践
  • 原文地址:https://www.cnblogs.com/jiangyu0331/p/11673862.html
Copyright © 2011-2022 走看看