[信息与通信]第十三章 Socket通信.pdfVIP

  • 1
  • 0
  • 约3.14万字
  • 约 91页
  • 2018-03-01 发布于浙江
  • 举报
[信息与通信]第十三章 Socket通信

第十三章 Socket 通讯 上个世纪末技术对人类生活和社会发展影响最大的就是 联网的发展 。时至今 日,如果没有 联网络人们可怎么生 活呢?它已经深入到我们生活的方方面面。许多人上午的第 一件事就是打开网络看看有什么新闻,和朋友联系通过电邮 (email ),在 联网上结识新朋友,通过 联网购物 、租 房,工作文件通过 联网传递,甚至于通过 联网订货 、签 署合同等商业活动。总之,互联网就象水、电等生活原始资 料一样,逐渐成为我们生活不可或缺的一部分 。 从本章开始的以后三章里,我们将逐渐学习如何设计程 序通过 联网进行连接和通讯。 13.1 Socket 的基本概念 13.1.1 什么是 Socket 在 Linux 系统中(或其它 UNIX ),一切输入 、输出 都是通过文件描述符进行的。你可以通过文件描述符打 开 UNIX 管道,普通串行终端,普通的磁盘文件,录音设 备,等等,所有有人说 “Everything in Unix is a file!” 。当然也可以是和其它联网计算机上的某个进程 的通道。所谓 Socket ,就是一个文件描述符,通过它可 以和网络上的其它进程进行通讯 。 既然 Socket 是一个文件描述符,那么我们能否通过 write() 和 read() 函数来读写它,也就是和远程进程进行 通讯呢?答案是肯定的。但是,我们通常通过另外的专 门函数去代替常用的 write() 和 read() 函数,因为这些 专门设计的函数具有更有效的控制能力,更加适合于网 络通讯的需求 。 当你建立一个通讯用的Socket ,你必须指出通讯的风 格,使用什么样的协议等,也就是需要回答下面的问题: ➢数据传输的单位是什么。有的通讯过程需要一个字节 一个字节的传输每个数据,而有些通讯过程需要把数据组 合成具有一定长度的数据帧 (或者叫数据包),这些数据 帧作为整体被计算机网络系统传输 。 ➢数据传输中是否允许数据丢失。有的通讯风格保证到 的数据都是按照发送时的顺序正确接收的,而有的不是 这样:既不保证按照发送是的顺序到 ,也不保证中间没 有丢失。 ➢通讯过程是否始终面向一个连接 。这种情况就象一个 电话,我们打电话时首先和远端的电话建立一个连接,在 整个通话过程中,我们一直保持这个连接,直到通话结 束。另一种情况是不需要建立连接,直接发送数据就可以 了,看起来向发送电报一样 。 基于对这样问题的答案选择,有许多种socket 可供使用 。但是,我们这里只介绍两种互联网常用 的socket 。这两种socket 是:面向连接的stream socket 和非面向连接的datagram socket 。另外有 一种可以操作底层协议的raw socket ,在 Linux 中 也经常使用,特别是实验某种新协议时,这里不作 介绍。 stream socket 是面向连接的,打开之后的通讯过 程中必须始终保持连接 。数据传输是可靠的,假设发 送方发送 “1,2” 两个数据包,则接收方也会以相同 的顺序收到 “1,2” 两个数据包,且保证数据的正确 性。 著名的telnet 程序使用的就是 stream socket ,当 你用它连接到某个机器的已知端口上时,你输入的每个 字符都会安顺序立刻发送给接收方,接收方也会发送它

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档