没有合适的资源?快使用搜索试试~ 我知道了~
首页Linux_下的Socket编程
Linux_下的Socket编程
5星 · 超过95%的资源 需积分: 10 26 下载量 45 浏览量
更新于2023-03-16
评论
收藏 110KB DOC 举报
Linux_下的Socket编程,Linux_下的Socket编程,Linux_下的Socket编程,Linux_下的Socket编程
资源详情
资源评论
资源推荐
Linux 下的
Socket
编程
什么是
接口是 网络的 , 接口定义了许多函数或例程,
程序员可以用它们来开发 网络上的应用程序。要学 上的
网络编程,必须理解 接口。
接口设计者最先是将接口放在 操作系统里面的。如果了解
系统的输入和输出的话,就很容易了解 了。网络的 数据
传输是一种特殊的 , 也是一种文件描述符。 也具有一个类
似于打开文件的函数调用 ,该函数返回一个整型的 描述符,
随后的连接建立、数据传输等操作都是通过该 实现的。常用的
类型有两种:流式 ()和数据报式
()。流式是一种面向连接的 ,针对于面向连
接的 服务应用;数据报式 是一种无连接的 ,对应于无连
接的 服务应用。
建立
为了建立 ,程序可以调用 函数,该函数返回一个类似于
文件描述符的句柄。 函数原型为:
!"#!#$%
指明所使用的协议族,通常为 &',表示互联网协议族
( 协议族);"# 参数指定 的类型: 或
, 接口还定义了原始 ((),允许
程序使用低层协议;#$ 通常赋值 )*)。 调用返回一个整型
描述符,你可以在后面的调用使用它。
描述符是一个指向内部数据结构的指针,它指向描述符表入口。
调用 函数时, 执行体将建立一个 ,实际上 )建立一个
)意味着为一个 数据结构分配存储空间。 执行体为你管
理描述符表。
两个网络程序之间的一个网络连接包括五种信息:通信协议、本地协议地
址、本地主机端口、远端主机地址和远端协议端口。 数据结构中包含这
五种信息。
配置
通过 调用返回一个 描述符后,在使用 进行网络传
输以前,必须配置该 。面向连接的 客户端通过调用
函数在 数据结构中保存本地和远端信息。无连接 的客户端和服
务端以及面向连接 的服务端通过调用 + 函数来配置本地信息。
, 函数将 与本机上的一个端口相关联,随后你就可以在该端口监听
服务请求。, 函数原型为:
+-!. /" ! $%
- 是调用 函数返回的 描述符!" 是一个指向
包含有本机 地址及端口号等信息的 类型的指针; $ 常被设
置为 0-. 。
. 结构类型是用来保存 信息的:
代码
12 .3 3433
52 3333.63short3 - $"%3/3地址族, &3/33
72 3333char3 819:%3/3193字节的协议地址 /33
92 ;%33
- $" 一般为 &',代表 ()地址族;
则包含该 的 地址和端口号。
另外还有一种结构类型:
代码
12 .3 3433
52 short3int3- $"%3/3地址族 /33
72 .63short3int3#%3/3端口号 /33
92 .3 3 %3/3 地址 /33
<2 .63char308=:%3/3填充 *3以保持与 .3
同样大小 /33
>2 ;%33
这个结构更方便使用。0 用来将 结构填充到与
. 同样的长度,可以用 +0或 函数将其置为零。
指向 的指针和指向 的指针可以相互转换,这意味着如
果一个函数所需参数类型是 时,你可以在函数调用的时候将一个指
向 的指针转换为指向 的指针;或者相反。
使用 + 函数时,可以用下面的赋值实现自动获得本机 地址和随机获
取一个没有被占用的端口号:
" 2#?*%/系统随机选择一个未被使用的端口号 /
" 2 2 ?''@%/填入本机 地址 /
通过将 " 2# 置为 *,函数会自动为你选择一个未占用的端口来
使用。同样,通过将 " 2 2 置为 ''@,系统
会自动填入本机 地址。
注意在使用 + 函数是需要将 # 和 转换成为网络字节优先顺
序;而 则不需要转换。
计算机数据存储有两种字节优先顺序:高位字节优先和低位字节优先。
上数据以高位字节优先顺序在网络上传输,所以对于在内部是以低位
字节优先方式存储数据的机器,在 上传输数据时就需要进行转换,否
则就会出现数据不一致。
下面是几个字节顺序转换函数:
A$:把 75 位值从主机字节序转换成网络字节序
A:把 1> 位值从主机字节序转换成网络字节序
A$:把 75 位值从网络字节序转换成主机字节序
A:把 1> 位值从网络字节序转换成主机字节序
,函数在成功被调用时返回 *;出现错误时返回 )B1)并将 置为
相应的错误号。需要注意的是,在调用 + 函数时一般不要将端口号置为小于
1*59 的值,因为 1 到 1*59 是保留端口号,你可以选择大于 1*59 中的任何
一个没有被占用的端口号。
连接建立
面向连接的客户程序使用 函数来配置 并与远端服务器建
立一个 连接,其函数原型为:
-!. /C ! $%
-是 函数返回的 描述符;C 是包含远端主机
地址和端口号的指针; $ 是远端地质结构的长度。 函数在出
现错误时返回B1,并且设置 为相应的错误码。进行客户端程序设计无须
调用 +,因为这种情况下只需知道目的机器的 地址,而客户通过哪个端
口与服务器建立连接并不需要关心, 执行体为你的程序自动选择一个未
被占用的端口,并通知你的程序数据什么时候到打断口。
函数启动和远端主机的直接连接。只有面向连接的客户程序使
用 时才需要将此 与远端主机相连。无连接协议从不建立直接连
接。面向连接的服务器也从不启动一个连接,它只是被动的在协议端口监听客
户的请求。
D 函数使 处于被动的监听模式,并为该 建立一个输
入数据队列,将到达的服务请求保存在此队列中,直到程序处理它们。
$-, + $6%
-是 系统调用返回的 描述符;+ $6 指定在请求队列
中允许的最大请求数,进入的连接请求将在队列中等待 #它们(参考下
文)。, $6 对队列中等待服务的请求的数目进行了限制,大多数系统缺省
值为 5*。如果一个服务请求到来时,输入队列已满,该 将拒绝连接请
求,客户将收到一个出错信息。
当出现错误时 $ 函数返回B1,并置相应的 错误码。
#函数让服务器接收客户的连接请求。在建立好输入队列后,服务
器就调用 # 函数,然后睡眠并等待客户的连接请求。
#-!C/ !/ $%
- 是被监听的 描述符, 通常是一个指向
变量的指针,该变量用来存放提出连接请求服务的主机的信息(某台主机从某
个端口发出该请求); 通常为一个指向值为 0-.
的整型指针变量。出现错误时 # 函数返回B1 并置相应的
值。
首先,当 # 函数监视的 收到连接请求时, 执行体将
建立一个新的 ,执行体将这个新 和请求连接进程的地址联系起
来,收到服务请求的初始 仍可以继续在以前的 上监听,同时可
以在新的 描述符上进行数据传输操作。
数据传输
和 C这两个函数用于面向连接的 上进行数据传输。
函数原型为:
-!C/6!$!E 6%
剩余10页未读,继续阅读
PENGYIHAN567
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论1