- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验 socket套接字编程实验指导
一、Sockets编程基础知识
网络编程就是通过计算机网络与其他程序进行通信的程序,Socket编程是网络编程的主流工具。
Socket API是实现进程间通信的一种编程设施,也是一种为进程间提供底层抽象的机制。尽管应用开发人员很少需要在该层编写代码,但是理解socket API还是非常重要的。主要有两点原因:第一,高层设施是构建于socket API之上的,它们是利用socket API提供的操作来实现。第二,对于响应时间要求较高或运行于有限资源平台上的应用,甚至socket API是唯一可用的进程间通信设施。
socket API出现于20世纪80年代早期,作为Berkeley Unix(BSD 4.2)操作系统程序库来通过进程间通信功能。现在主流操作系统都提供socket API。在基于Unix系统中,如BSD、Linux系统,socket API是操作系统内核的一部分;在MS-DOS、Windows OS、OS/2等操作系统中,socket API是以程序库形式提供的,如在Windows系统中,socket API被称为Winsock。
Socket接口规范可以适用多种通讯协议,主要是TCP/IP。TCP/IP是计算机互联最常适用的网络通讯协议,TCP/IP的核心部分由网络操作系统的内核实现,应用程序通过编程接口来访问TCP/IP,应用程序通讯的方式有图3-1所示。
图3-1:应用程序通信方式
TCP/IP使用一个网络地址和一个服务端口号来惟一地标识设备。网络地址标识网络上的特定设备;端口号标识要连接到的该设备上的特定服务。网络通讯的基本模式如下:每一台通讯的主机都有一个本网络环境中惟一的IP地址,一台主机上往往有多个通讯程序存在,每个这样的程序都要占用一个通讯端口。因此,一个IP地址,一个通讯端口,就能确定一个通讯程序的位置。
二、Socket通讯连接方式
Socket主要有三种通讯方式:流式Socket、数据报Socket和原始Socket。
1.流式Socket(SOCK_STREAM)
流式套接字提供了基于Unix操作系统的流式I/O的数据传输模式,它仅仅支持通过可靠的、面向连接的通信,类似于电话系统服务,即每一次完整的数据传输都要经过建立连接、使用连接、终止连接的过程、在数据传输过程中,各数据分组不携带目的地址,而使用连接号(connect ID)。从本质上看,连接是一个管道,收发数据不但顺序一致,而且内容相同。
Socket编程中,双方进程可以单独创建流式Socket,再在socket之间形成连接。一旦数据作为字符流被写入发送者进程,然后接收者通过socket来读取该数据。面向连接通信能确保数据沿预先建立的连接安全有序地传输。
服务器使用两个Socket:一个接收连接;一个发送/接收数据。见图5-2。
图3-2:流式Socket通信
2.数据报Socket(SOCK_DGRAM)
数据报套接字定义了一种无连接的服务,数据通过相互独立的报文进行传输,是无序的,并且不保证可靠、无差错。类似于邮政系统服务。每个分组都携带完整的目的地址,各分组独立传送。无连接服务不能保证分组的先后顺序,不进行分组出错的恢复与重传,不保证传输的可靠性。UDP协议提供无连接的数据报服务。它使用数据报协议UDP。
图3-3:无连接数据包socket
3.原始Socket
原始套接字允许对底层协议如IP或ICMP直接访问,它功能强大但使用不便主要用于一些协议的开发。
三、基于C的面向连接的Socket编程模型
TCP协议是面向连接协议,它提供了一系列的数据纠错功能,可以保证在网络上传输的数据及时、无误的传给接收方。因此面向连接协议的Socket编程模型应用最为广泛,基于连接协议的服务是设计客户端/服务器应用程序时的标准。编程模型如图3-4所示。
模型中,服务器端的处理:
(1)使用socket系统调用,生成一个TCP协议模块与应用程序之间进行通信的套接字;使用bind系统调用指定端口号;
(2)使用bind系统调用指定端口号;
(3)使用listen系统调用,指定连接接收队列的长度,并等待来自客户端的连接请求。
前三步完成了启动服务器程序的工作。一旦listen监听到有客户端的连接,就调用accept接收连接。
希望与服务器通信的进程称为客户,客户所运行的计算机环境称为客户端,有时两个概念混用。
客户端的处理:
(1)使用socket系统调用,打开TCP协议模块与应用程序之间的通信线路;
(2)使用connect系统调用,指定IP地址和端口号,和服务器相应的服务应用程序建立TCP协议的连接请求;
客户端和服务器程序在建立连接后,使用send和recv调用完成数据的发送和接收
您可能关注的文档
- SMA试验段方案参考..doc
- SMC比例阀..doc
- SMP-WL-004物料贮存管理规程..docx
- SMT专业术语..doc
- SMT产品生产线的优化..docx
- SMT作业工艺讲义版2011年12月5日..doc
- SMT培训教材..doc
- SMT基础知识培训..docx
- SMT基本知识..doc
- SMT全技术-第二集..doc
- 陕西省汉中市部分学校2023-2024学年高一上学期第三次选科调研考试生物试卷.docx
- 陕西省汉中市部分学校2023-2024学年高一上学期第三次选科调研考试化学试卷.docx
- 陕西省汉中市部分学校2023-2024学年高一上学期第三次选科调研考试历史试卷.docx
- 《祁门种病虫害防治技术规程》.docx
- 四川省眉山市东坡区眉山北外附属东坡外国语学校2024-2025学年高二上学期11月期中考试数学试题.docx
- 陕西省榆林市2025届高三上学期11月第一次模拟检测地理试卷.docx
- 消防车道、救援场地标识设置规范.docx
- 消防车道、救援场地标识设置规范.pdf
- 《祁门种病虫害防治技术规程》.pdf
- 四川省仁寿县铧强中学2024-2025学年高一上学期11月期中地理试卷.docx
文档评论(0)