linux 系统编程7new

linux 系统编程7new

ID:34642906

大小:200.27 KB

页数:17页

时间:2019-03-08

linux 系统编程7new_第1页
linux 系统编程7new_第2页
linux 系统编程7new_第3页
linux 系统编程7new_第4页
linux 系统编程7new_第5页
资源描述:

《linux 系统编程7new》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第七章套接字Berkeley版的UNIX引入了一种新的通信工具——套接字接口(socketinterface),它是管道概念的一个扩展。Linux支持套接字接口。此外,Microsoft的Windows也通过WindowsSockets技术规范(简称WinSock)支持套接字接口。因此,Windows和Linux可通过套接字来实现网络通信,满足许多应用需求。虽然WinSock和Linux套接字不尽相同,但都以套接字为基础。网络编程中使用最广泛的模型就是客户机-服务器模型。这个模型中有管理资源的服务器进程,和需要对共享资源进行访问的客户机进程

2、。其特点是:ò由客户,而不是服务提供者,发起动作。ò服务器被动的等待来自客户机的请求。ò服务器要能够处理多个同时发出的客户机请求。另外还有事件通知机制和P2P计算等模型。相对复杂。还有一种说法。套接字是TCP/IP协议的设计者创建的一个接口,以便应用程序利用这个接口能很方便的进行通信。这不是OS在TCP/IP和应用程序之间设计的接口。1.套接字属性套接字的特性由四个属性确定,它们是:域(domain)、地址(address)、类型(type)和协议(protocol)。1.1套接字的域域指定套接字通信中使用的网络介质。最常见的套接字域是AF

3、_INET,它指的是互联网络。还有一个域是AF_UNIX,它指的是本地文件系统,如果在单机上通过套接字实现进程间通信,就用AF_UNIX域。另外还有AF_ISO(基于ISO标准协议的网络)和AF_XNS(基于施乐网络系统)。1.2套接字的地址不同的域有不同的套接字地址。对于AF_UNIX来说,套接字的地址就是本地文件系统上一个绝对路径的文件名。对于AF_INET来说,套接字的地址就是本地IP地址以及一个合适的端口号,可以把端口号理解为最终的逻辑信道(两机之间有一条最初的逻辑信道——IP,接着有两条中间的逻辑信道——TCP和UDP,然后有若干

4、最终的逻辑信道——端口)。Lecturer:WangXiaoniu1CollegeofMathematicsandInformationScienceNorthwestNormalUniversity1.3套接字的类型有两种截然不同的套接字类型:流(SOCK_STREAM):提供有序、可靠、双向字节流的连接,其行为可见。由TCP支持;数据报(SOCK_DGRAM):不建立和维持一个连接,对数据包的长度有限制,可能丢失、乱序或重复到达。由UDP支持。1.4套接字的协议在大多数的实现中,每一种套接字类型只能使用一种协议。因此,通常忽略协议。2.

5、套接字连接2.1创建套接字socket系统调用创建一个套接字并返回一个文件描述符(所有的东西都抽象成文件),可以通过该文件描述符来访问该套接字。具体参数如前所述。SYNOPSIS#include#includeintsocket(intdomain,inttype,intprotocol);如果成功,socket返回一个对应于套接字文件描述符的非负整数,否则,返回-1并设置errno。下表列出了socket实现必须检测的错误和相应的错误码。errno原因EAFNOSUPPORT本实现不支持

6、指定的地址簇EMFILE进程不再有文件描述符可用ENFILE系统不再有文件描述符可用EPROTONOSUPPORT地址簇或本实现不支持协议EPROTOTYPE协议不支持套接字类型下面代码为网络通信建立了一个面向连接的套接字:intsockfd;if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)perror(“Failedtocreatesocket”);Lecturer:WangXiaoniu2CollegeofMathematicsandInformationScienceNorthwestNor

7、malUniversity2.2绑定套接字必须为套接字绑定一个地址。对于客户机来说,程序员不需要显式地知道套接字地址(因为服务器不需要主动来连接),因此绑定工作由系统隐式完成(IP地址就是本地主机,端口程序员不需要知道)。但在客户机上仍然要有服务器地址的描述,因为客户机要向这个地址连接。对于服务器来说,则必须显式绑定地址(这样客户机才能知道这个地址)。对于本地文件系统域(AF_UNIX)来说,其地址结构由sockaddr_un来描述。#includestructsockaddr_un{sa_family_tsun_fam

8、ily;charsun_path[];}显然,sun_family应该为AF_UNIX,而sun_path[]则为一个绝对路径的文件名。对于互联网络域(AF_INET)来说,其地

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。