没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
Linux Socket
学习(一)
理解套接口
在我们试着使用套接口之前理解套接口后面的一些内容是很重要的。这一部分
描绘出围绕着套接口的一些高级内容。
定义套接口
要与使用电话的某人进行交流,我们必须拿起话筒,拨打对方的电话号码,并
且等待对方的应答。当我们与对方通话时,就建立了两个通信端点。
我们的电话,在我们的位置
远方的对方电话,在他的位置。
只要我们仍在通话,就我们之间调用两个端点,建立了一条通信线路。
下的套接口也与电话相类似。套接口代表通信线路中的两个端点。在这
两个端点之间存在着数据通信网络。
在另一个方式上套接口也与电话类似。当我们要打给某人,我们拨打我们要联
系的人的电话号码。套接口有网络地址而不是电话号码。通过指定远程套接口
地址,我们的程序可以在我们的本地套接口与远程端点之间建立一条通信线路。
由此我们可以推断,一个套接口是通信中的一个端点。有许多的 函数调
用可以操作套接口,而我们将会慢慢的了解这些。
使用套接口
也许我们会认为 套接口很特殊,因为套接口有一个可以在其上进行操作
的特定的函数集合。尽管套接口有一些特殊的属性,但是他与我们十分熟悉的
文件描述十分相似。
例 如,当我们使用 的 调用打开一个文件,如果 函数调用成
功,我们就会得到一个返回的文件描述符。在我们有了这个文件描述符以后,
我 们的程序可以使用文件描述符来 ,,,以及 打开的
指定文件。相似的,当创建了一个套接口时,他与文件描述符十分想 似。我们
可以使用相同的文件 函数来读,写以及关闭套接口。
然而在套接口与打开的文件之间也存在一些不同。下面列出了其中的一些不同
之处:
我们不可以在套接口上执行 函数。
套接口有与其相关联的地址。文件和管道没有网络地址。
套接口有可以使用 函数进行查询与设置的不同选项功能。
为了执行输入或输出,套接口必须处理正确的状态。相反,打开的磁盘文件可
以在任何时候进行读取或是写入。
引用套接口
当 我们使用 函数调用来打开一个新文件时, 内核就会返回下一个
可用的并且是最小的文件描述符。文件描述符,或者是常称之为文件单元数,
是零 或者正的整数值,用来引用打开的文件。这个句柄会用在在打开的文件上
进行操作的所有函数中。现在我们就会知道文件单元数也可以引用特定的套接
口。
我们的程序已经打开了 和 三个文件单元(标准输入,标准输出,标准错
误),接下来的程序操作将会被执行。注意内核是如何分配文件描述符的:
调用 函数来打开一个文件
返回文件单元 来引用打开的文件。因为这个单元数当前并没有用,并且是
可用的最小的单元数,所以为文件选择了 作为文件单元数。
通过一个合适的函数调用来创建一个新的套接口。
返回文件单元 来引用这个新的套接口。
通过调用 打开另一个文件。
返回文件单元 来引用这个新打开的文件。
注意:当分配单元数时, 内核在文件与套接口之间并没有区别。用一个
文件描述符来引用一个打开的文件或是一个网络套接口。
这就意味着,我们作为一个程序员,可以将套接口当作打开的文件一样来使用。
通过文件单元数交互的来引用文件和套接口的能力提供给了我们极大的灵活性。
这就意味着 和 函数可以同时在打开的文件和套接口上进行操作。
套接口与管道的比较
在我们介绍任何套接口函数之前,我们来回忆一下我们已经熟悉的 函数调
用。让我们看一下他返回的文件描述符与套接口的不同。下面是由 的手册
中得到的函数概要:
!"
#$%&'(
当 这个调用成功时, 函数会返回两个文件描述符。数组元素 $%&包
含管道读端的文件描述符。$%&元素是管道写端的文件 描述符。两个文
件描述符的这种安排提示了在每一端使用文件描述符的通信连接。这与使用套
接口有何不同呢?不同就在于 函数创建了一个单向的通信线。 信息只可
以写入 $%&中的文件单元数,并且只可以从 $%&中进行读取。任
何向相反方向写入数据的尝试都会得到 内核 返回的错误。
另一个方面,套接口允许在两个方向处理通信。例如,一个进程可以使用在文
件单元 上打开的套接口向远端进程发送数据。与使用管道不同,同一个本地
进程也可以从文件单元 上接收到与其相通信的远端进程发送的数据。
Linux Socket
学习二
分类: )*++,- 人阅读 评论#'收藏 举报
.创建套接口
在这一部分,我们将会看到创建套接口与创建管道一样的容易。虽然有一些我
们将会了解到的函数参数。为了能创建成功,这些参数必须提供合适的值。
函数概要如下:
// !"
/ !"
#0/1%&'(
// ! 文件需要用来定义一些 2 宏常量。/ ! 文件必须包含进
来定义 函数原型。
函数需要四个参数。他们是:
套接口的域
套接口类型
使用的协议
指向存储文件描述符的指针
0 参数直到第 单我们才会解释。对于 函数而言,只需提供
2 宏 34523。
类型参数声明了我们希望创建哪种类型的套接口。 函数的选择如下:
)265)7893:
)265;<83:
套接口类型的选择我们将会在第 章谈到。在这一章中,我们只需要简单的使
用 )265)7893: 套接口类型。
对于 函数, 参数必须提供为 。
参数 1%&是接收代表两个套接口的整数数组。每一个文件描述符代表一个套
接口,并且与另一个并没有区别。
如果函数成功,将会返回 值。否则将会返回+ 表明创建失败,并且 来
表明特定的错误号。
使用 的例子
为了演示如何使用 函数,我们用下面的例子来进行演示。
,.=> ,
,..=
,..=90?#'?,
,..=
,. !"
,.@ !"
*,. !"
A,. !"
-,.> !"
,// !"
,/ !"
,
,
,0#>!==>1'B
,....C(...................=)=
,....%&(................=D?=
*,
A,....=
-,.....=2?,
,.....=
,....CE#34523)265)7893:'(
,
剩余63页未读,继续阅读
资源评论
- Zidane_20142014-07-20介绍的太少了,不够详细。
- 晓风残寒2014-11-11可以借鉴借鉴,很好!
- IT_码农2014-11-15对研究Socket编程很有帮助
昵称很不好取
- 粉丝: 797
- 资源: 22
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功