首页 > 其他 > 详细

socket基本概念

时间:2019-05-05 20:07:38      阅读:118      评论:0      收藏:0      [点我收藏+]

  1.socket 是什么?

  在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信的一种约定或一种方式。通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发  送数据。

  2.Linux 中的 socket 是什么?

  在 UNIX/Linux 系统中,为了统一对各种硬件的操作,简化接口,不同的硬件设备也都被看成一个文件。对这些文件的操作,等同于对磁盘上普通文件的操作。
  UNIX/Linux 中的一切都是文件!
为了表示和区分已经打开的文件,UNIX/Linux 会给每个文件分配一个 ID,这个 ID 就是一个整数,被称为文件描述符(File Descriptor)。例如:

  • 通常用 0 来表示标准输入文件(stdin),它对应的硬件设备就是键盘;
  • 通常用 1 来表示标准输出文件(stdout),它对应的硬件设备就是显示器。


  UNIX/Linux 程序在执行任何形式的 I/O 操作时,都是在读取或者写入一个文件描述符。一个文件描述符只是一个和打开的文件相关联的整数,它的背后可能是一个硬盘上的普通文件、FIFO、管道、终端、键盘、显示器,甚至是一个网络连接。
  请注意,网络连接也是一个文件,它也有文件描述符!你必须理解这句话。
我们可以通过 socket() 函数来创建一个网络连接,或者说打开一个网络文件,socket() 的返回值就是文件描述符。有了文件描述符,我们就可以使用普通的文件操作函数来传输数据了,例如:

  • 用 read() 读取从远程计算机传来的数据;
  • 用 write() 向远程计算机写入数据。

  你看,只要用 socket() 创建了连接,剩下的就是文件操作了,网络编程原来就是如此简单!

 

  3.套接字的类型

  <1>流格式套接字(基于TCP)

   SOCK_STREAM 是一种面向连接的、可靠的、双向的通信数据流,数据可以准确无误地到达另一台计算机,如果损坏或丢失,可以重新发送。

   SOCK_STREAM 有以下几个特征:

    •   数据在传输过程中不会消失;
    •   数据是按照顺序传输的;
    •   数据的发送和接收不是同步的(有的教程也称“不存在数据边界”)--有缓存区

    <2>数据报格式套接字(基于UDP)

     SOCK_DGRAM 是无连接的不可靠的,不会进行数据的检查  

    它有以下特征:

    •   强调快速传输而非传输顺序;
    •   传输的数据可能丢失也可能损毁;
    •   限制每次传输的数据大小;
    •   数据的发送和接收是同步的(有的教程也称“存在数据边界”)。

 

socket基本概念

原文:https://www.cnblogs.com/zgqcn/p/10815778.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!