zoukankan      html  css  js  c++  java
  • 【网络编程】学习笔记02 套接字类型与协议设置

    首先要清楚什么是协议(protocol)?

      简言之,协议就是为了完成数据交换而定好的约束。

    回顾我们在《学习笔记 --01》中创建套接字socket中的代码:

    #include<sys/socket.h>
    int socket(int domain,int type,int protocol)
        |
        |- domain   套接字中使用的协议族(Protocol Family)信息
        |- type     套接字数据传输类型信息
        |- protocol 计算机间通信中使用的协议信息 

    接下来我们将会根据该函数的参数进行具体展开讨论:

    1.协议族(domain/Protocal Family):

      这里我们通常会用PF_INET 意思为 IPv4互联网协议族

    2.套接字类型(Type):

      套接字类型指的是套接字的数据传输方式。

      SOCK_STREAM:TCP(面向连接的套接字)。特点:传输过程中数据不会消失,按序传输数据,传输数据不存在边界

      SOCK_DGRAM: UDP(面向消息的套接字)。特点:速度快,但无法避免损失,存在数据边界,数据边界意味着接收数据的次数应和传输次数相同

    3.协议的最终选择(protocol):

      其实传递前2个参数即可创建所需的套接字。所以大部分情况下可以向第三个参数传递0,除非遇到以下情况:

        "同一协议族中存在多个数据传输方式相同的协议”

      暨数据传输方式相同,但协议不同,此时需要通过第三个参数具体指定协议信息。

      若是TCP的话,则为IPPROTO_TCP

      若是UDP的话,则为IPPROTO_UDP

    最终成果展示如下:

    面向连接的套接字:
    int tcp_socket = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP)
    
    面向消息的套接字:
    int udp_socket = socket(PF_INET,SOCK_DGRAM,IPPROTO_UDP)
    前ICPC算法竞赛退役选手|现摸鱼ing
  • 相关阅读:
    C# 延时不卡界面
    C++ 转C#
    CYQ数据库配置
    VB Modbus RTU CRC 校验
    开始写博客了
    简单工厂模式
    单例模式
    基础、hibernate目前应用的对比
    QT Creator 代码自动补全---快捷键设定
    C# CMD直接运行语句
  • 原文地址:https://www.cnblogs.com/Anonytt/p/15528416.html
Copyright © 2011-2022 走看看