- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第9章 网络通信应用概要1
第9章 网络通信应用;9.1 网络通信基础;9.1.1 TCP/IP协议族;9.1.2 IP协议;9.1.2 IP协议;;;9.1.3 TCP协议;9.1.4 UDP协议;9.1.5 学习分析协议的方法;9.2 Socket通信基本概念; 在UNIX系统中,网络应用编程界面有两类:UNIX BSD的Socket和UNIX System V的TLI 。由于Sun公司采用了支持TCP/IP的UNIX BSD操作系统,使TCP/IP的应用有了更大的发展,其网络应用编程界面──Socket在网络软件中被广泛应用,至今已引进到Windows和VxWorks等操作系统中,成为开发网络应用软件的强大工具。
Socket相当于网络上的通信节点,即IP地址加上端口号。应用程序使用了Socket之后,就可以和网络上的任何一个通信节点连接。Socket之间的通信就如同一台PC机上两个进程间的通信一样。
在Linux操作系统中,可以将Socket看成是一种设备,即一种可作双向传输的信道,Linux程序可以经过此设备与本地或是远程的程序进行通信。;Socket常被翻译成套接字或者插口。它实际就是网络上的通信端点,使用者或应用程序只要连接到Socket便可以和网络上任何一个通信端点连接、传输数据。
Socket封装了通信的细节,在Linux系统中,为使用者提供了类似文件描述符的操作方法。
Socket分成面向连接的数据流通信和无连接的数据报通信。
;9.2.1 创建socket对象;9.2.2 面向连接的Socket通信实现;9.2.2 面向连接的Socket通信实现;9.2.3 面向连接的echo服务编程实例; 目前,Internet仍使用IPv4作为寻址模式。在Socket中,寻
址模式的结构为sockadd_in,定义如下:
struct sockadd_in{
sa_family_t sin_family; /*addressing mode*/
unsigned short int sin_port; /*port number*/
struct in_addr sin_addr; /*Internet address*/
}
其中结构成员sin_family用来说明Socket所使用的寻址模式,
在网络编程中,其值只能是AF_INET;
成员sin_port表示TCP/IP的端口号;
成员sin_addr是in_addr结构,用来表示IP地址;
in_addr的结构很简单,只有一个unsigned long型的成员变量。
; TCP协议是面向连接的,在建立连接之前,经历的过程比较多。
网络程序无论是使用TCP还是UDP协议,要通过Socket传输数
据,都必须建立Socket,可以使用socket()函数建立一个Socket。该函数的原型如下:
int socket(int domain,int type,int protocal);
参数domain的值在网络程序中只能为AF_INET,表示使用Internet协议
参数type为连接的类型,SOCK_STREAM,表示采用TCP建立连接;
参数protocal代表通信协议,一般设为0,表示自动选择。
bind()函数用于将IPv4 Socket寻址结构绑定到其所建立的
Socket,当有数据包到达时,Linux内核会将这个数据包让给其
绑定的Socket来处理。bind()函数的原型如下:
int bind(int sockfd,const struct sockaddr_in *my_addr,int adr_len);
参数sockfd是调用函数socket()的返回值;
参数my_addr用来存放绑定的IPv4寻址结构;参数adr_len为结构sockaddr_in的长度。;使用listen()函数来监听、等待客户端的连接请求。该函数的原型如下:
int listen(int sockfd,int backlog);
参数sockfd为socket()函数的返回值;参数backlog用来指定最
大连接数,一般设为5。
当服务器端接收到客户端的连接请求时,会把连接请求放在连
接队列中,接着用accept()函数处理并接受队列中的请求。
int accept( int sockfd,struct sockadd_in *addr,int addrlen);
参数addr用来存放客户端的IP地址,其他两个参数的设置同
bind()函数的这两个参数。
connect()函数是客户端使用的函数。当客户端建立好Sock
您可能关注的文档
- 普通地质学3-2第三章火成岩1概要1.ppt
- 普通话第四课概要1.ppt
- 普通物理学复习纲要(下)概要1.doc
- 普通V带传动的张紧装置概要1.pptx
- 普通车工赛项规程概要1.doc
- 普通话训练教程(练习)概要1.ppt
- 第8课《听潮》课件概要1.ppt
- 第8课大九连环概要1.ppt
- 第8课《清兵卫与葫芦》课件1(语文版九上)概要1.ppt
- 第8课第1站 宽以待人概要1.pptx
- 湖北省荆州市沙市中学2025-2026学年高一上学期12月月考语文试题.docx
- 吉林省长春市第二实验中学2025-2026学年高二上学期11月期中考试数学含解析.docx
- 四川省字节精准教育联盟2026届高中毕业班第一次诊断性检测政治.docx
- 四川省字节精准教育联盟2026届高中毕业班第一次诊断性检测政治答案.docx
- 物理试卷(A卷)答案山西省三重教育2025-2026学年高二12月阶段性检测(12.17-12.18).docx
- 物理试卷(A卷)山西省三重教育2025-2026学年高二12月阶段性检测(12.17-12.18).docx
- Unit1Reading2课件牛津译林版七年级英语下册.pptx
- 物理试卷(A卷)答案浙江省2025学年第一学期浙江北斗星盟高二年级12月阶段性联考(12.18-12.19).docx
- 四川省字节精准教育联盟2026届高中毕业班第一次诊断性检测语文.docx
- Unit1MynamesGina第3课时考点讲解writing16张.pptx
原创力文档


文档评论(0)