1 / 41
文档名称:

FreeBSD+Socket+编程入门.doc

格式:doc   大小:120KB   页数:41页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

FreeBSD+Socket+编程入门.doc

上传人:文库旗舰店 2019/9/15 文件大小:120 KB

下载得到文件列表

FreeBSD+Socket+编程入门.doc

文档介绍

文档介绍:一、概述BSD套接字(socket)将进程间通信推到一个新的水平。彼此通信的进程可不再必须运行在同一计算机上。它们仍然还能够运行在同一计算机上,但不再必须那样。不仅这些进程不必运行在同一计算机上,它们也不必运行在同一种操作系统上。有了BSD套接字,你的FreeBSD软件能够与运行在Macintosh?中的程序顺利的协同工作,也可以与另一个在Sun?工作站上的,或是另一个运行在Windows?2000中的,只要这些系统用以太网型的局域网相连。你的软件还可以很好的与运行在另一幢大楼,或是在另一个大陆、在一艘潜艇中的,或是一架航天飞机中的进程协同工作。它也能够与并非属于计算机一部分(至少从术语的严格意义上说不是)的组件协同工作,这种设备像打印机、数码相机、医疗设备,大致只要是任何能够进行数字通信的东西。二、联网和多样性我们已经暗示了联网的多样性问题。许多不同的系统要彼此对话。它们必须说同一种语言。与此同时,它们也必须理解同一种语言。人们常常认为肢体语言是通用的。事实并非如此。回想在我刚刚十几岁时,我的父亲带我去保加利亚。一次我们正坐在索非亚一座公园里的桌子旁,一个小贩上来向我们推销烤杏仁。那时我还没有学****多少保加利亚语,我没有说“不”,而是摇了摇头,那是“通用的”说不的肢体语言。小贩很快开始装给我们一些杏仁。然后我想起我曾被告知在保加利亚摇头表示是。很快,我又开始上下点头。小贩注意到了,就拿起他的杏仁走开了。对于一个统一的观察者,我没有改变肢体语言:我继续使用摇头和点头的语言。被改变的是肢体语言的意义。最初,小贩和我将同一种语言理解为完全不同的意义。我必须校正我自己对那种语言的了解,这样小贩才会明白。对于计算机也是同样的:同样的符号可能会有不同的,乃至截然相反的意义。所以,为了让两台计算机明白彼此,它们不仅要对于相同的语言有默契,还必须对这种语言的理解有默契。三、协议当各种各样的编程语言动辄有着复杂的语法,并且使用了许多多字母保留字(这使用它们易于被人类程序员明白);数据通信的语言则倾向于简洁。它们经常使用一个个二进制位,而不是多字节单词。这有一个很令人信服的理由:数据在你的计算机内部可以以光速高速行进,而在计算机之间传递数据时,速度却会慢得多。因为数据通信中使用的语言很简洁,我们通常把它们称为协议,而不是语言。当数据从一台计算机行进到另一台时,它一般使用超过一种协议。这些协议是分层次的。数据可以与一头洋葱的芯类比:只有你剥开几层“表皮”后才可取得数据。这最好用一张图说明:在这个例子中,我们尝试从用以太网连着的网页上获取一幅图像。图像由原始数据组成,那是一个我们的软件能够处理的(转换为一幅图片并显示在我们的显示器上)红绿蓝值序列。唉,我们的软件无法知道原始数据是如何组织的:那是一个红绿蓝值序列,还是一个灰度序列,或者可能是CMYK编码的色彩?数据是表现为8位离散值,还是16位大小,或是4位?图像由多少行和列组织?有的像素应当是透明的吗?我想你得到了图片……为了统一我们的软件处理原始数据的方式,数据被编码为PNG文件。那也可以是GIF,或JPEG文件,不一定只是PNG文件。于是PNG就是一种协议。对于这一点,我可以听见你的喊声:“不,那不是!那是一种文件格式!”好,那当然是一种文件格式。但从数据通信的方面说,一种文件格式也是一种协议:文件结构是一种语言,而且还是一种简洁的语言,与我们的进程通信,确定数据如何被组织。因此,那是一种协议。唉,假如我们接收到的只有PNG文件,我们的软件将要面对一个严峻的问题:将如何知道数据代表一幅图像,而不是一些文本、或可能是一段声音,或者这些都不是?其次,将如何知道图像是PNG格式的,而不是GIF,或是JPEG,或是其它图像格式?要取得那些信息,我们使用另一种协议:HTTP。这种协议能告诉我们数据确实代表一幅图像,并且图像使用PNG协议。它也能告诉我们其它一些东西,不过还是让我们把注意力停留在协议层次这里吧。至此,我们有一些数据被包裹在PNG协议中,而后又被包裹在HTTP协议中。我们如何从服务器上取得它?通过在以太网上使用TCP/IP,这就是方法。实际上,有比三种更多的协议。我不再继续深入了,我现在开始说说以太网,只因为这样更容易解释其余的问题。以太网是一种有趣的系统,它将计算机连接在一个局域网(work,LAN)中。每台计算机有一个网络接口卡(中文简称“网卡”)(networkinterfacecard,NIC)。每个网卡有一个唯一的48位标识,称为它的地址。世界上没有两块网卡会有相同的地址。这些网卡彼此相连。一旦一台计算机要与在同一以太网局域网中的另一台计算机通信时,就在网络上发送一条消息。每个网卡都会看见这条消息。但是作为以太网协议的一部分,数据包含目的网卡的地址(还有其它内容)。所以,在所有网卡中