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
  • 相关阅读:
    sublime显示当前文件的编码格式
    关于jquery中html()、text()、val()的区别
    bit,Byte,B,KB,MB,GB
    python之序列操作
    编程常用密匙
    js数组操作
    ob函数的使用
    php使用zlib实现gzip压缩
    js兼容性汇总
    centos7下源码编译安装mysql5.7
  • 原文地址:https://www.cnblogs.com/Anonytt/p/15528416.html
Copyright © 2011-2022 走看看