linux网络编程_hou.pdf

上传人:qwe****56 文档编号:70008519 上传时间:2023-01-14 格式:PDF 页数:50 大小:2.24MB
返回 下载 相关 举报
linux网络编程_hou.pdf_第1页
第1页 / 共50页
linux网络编程_hou.pdf_第2页
第2页 / 共50页
点击查看更多>>
资源描述

《linux网络编程_hou.pdf》由会员分享,可在线阅读,更多相关《linux网络编程_hou.pdf(50页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、houLinux 网络编程1、Linux网络概述2、Linux 网络编程基础3、TCP网络程序设计4、UDP网络程序设计houLinux 网络模型hou网络接口层网络接口层网络接口层网络接口层Internet层层层层传输层传输层传输层传输层应用层应用层应用层应用层EthernetEthernetToken RingToken RingFDDIFDDIFrame RelayFrame RelayOthersOthersTCPTCPUDPUDPTelnet FTP TFTP SMTP LPD NFS SNMPTelnet FTP TFTP SMTP LPD NFS SNMPTelnet FTP T

2、FTP SMTP LPD NFS SNMPTelnet FTP TFTP SMTP LPD NFS SNMPICMP IP IGMPTCP/IP协议hou网络层协议hou传输层协议hou传输层协议hou应用层协议hou协议封装协议封装协议封装协议封装houTCP传输控制协议传输层的主要协议传输层的主要协议传输层的主要协议传输层的主要协议面向连接的面向连接的面向连接的面向连接的、可靠的数据传输服务可靠的数据传输服务可靠的数据传输服务可靠的数据传输服务传输之前源主机与目标主机有三次握手传输之前源主机与目标主机有三次握手传输之前源主机与目标主机有三次握手传输之前源主机与目标主机有三次握手使用使用使用

3、使用TCPTCPTCPTCP端口号端口号端口号端口号hou三次握手连接请求连接请求连接请求连接请求响应连接请求响应连接请求响应连接请求响应连接请求确认响应确认响应确认响应确认响应开始传输数据开始传输数据开始传输数据开始传输数据源源源源源源源源主主主主主主主主机机机机机机机机目目目目目目目目的的的的的的的的主主主主主主主主机机机机机机机机三次握手完成三次握手完成三次握手完成三次握手完成houTCP数据包的报头格式houUDP用户数据报协议houUDP面向无连接的协议特点特点特点特点:由于直接发送数据由于直接发送数据由于直接发送数据由于直接发送数据,所以开销小所以开销小所以开销小所以开销小、速速速

4、速度快度快度快度快。适用于流动音频适用于流动音频适用于流动音频适用于流动音频、视频视频视频视频、广播和实时广播和实时广播和实时广播和实时数据传输数据传输数据传输数据传输。houTCP和UDP的区别不可靠的不可靠的不可靠的不可靠的可靠的可靠的可靠的可靠的即时传输少量数据即时传输少量数据即时传输少量数据即时传输少量数据传输大量的数据传输大量的数据传输大量的数据传输大量的数据面向非连接面向非连接面向非连接面向非连接面向连接面向连接面向连接面向连接UDPUDPUDPUDPTCPTCPTCPTCPhou二二二二、网络编程基础网络编程基础网络编程基础网络编程基础socketsocketsocketsock

5、et编程编程编程编程进行进行进行进行socket编程时编程时编程时编程时,需要忽略需要忽略需要忽略需要忽略SIGPIPE信信信信号号号号hou1.1.1.1.网络层的网络层的网络层的网络层的“IPIPIPIP地址地址地址地址”可以唯一标识网络中的主机可以唯一标识网络中的主机可以唯一标识网络中的主机可以唯一标识网络中的主机2.2.2.2.传输层的传输层的传输层的传输层的“协议协议协议协议+端口端口端口端口”可以唯一标识主机中的应用可以唯一标识主机中的应用可以唯一标识主机中的应用可以唯一标识主机中的应用程序程序程序程序(进程进程进程进程)3.3.3.3.三元组三元组三元组三元组(IPIPIPIP地

6、址地址地址地址,协议协议协议协议,端口端口端口端口)标识网络的进程标识网络的进程标识网络的进程标识网络的进程Linux中的网络编程是通过中的网络编程是通过中的网络编程是通过中的网络编程是通过socket(套接套接套接套接字字字字)接口实现的接口实现的接口实现的接口实现的,socket是一种是一种是一种是一种文件描述符文件描述符文件描述符文件描述符。houhouhou地址结构hou地址结构hou地址结构hou地址转换hou字节序转换hou字节序转换hou字节序转换houIP和主机名hou函数hou函数houTCP 应用程序设计hou基于TCP-服务器hou基于TCP-客户端hou基于TCP-通讯

7、模式houUDP 应用程序设计hou基于UDP-服务器hou基于UDP-客户端hou基于UDP-通讯模式housocket 系统调用系统调用系统调用系统调用int socket(int domain,int type,int protocol);功功功功能能能能:创建一个新的套接字创建一个新的套接字创建一个新的套接字创建一个新的套接字。参参参参数数数数:domain:指明所使用的协议族指明所使用的协议族指明所使用的协议族指明所使用的协议族type:指定套接字的枑型指定套接字的枑型指定套接字的枑型指定套接字的枑型protocol:通常赋值通常赋值通常赋值通常赋值0000返回值返回值返回值返回值:

8、成功时成功时成功时成功时,返回一个整型返回一个整型返回一个整型返回一个整型socketsocketsocketsocket描述符描述符描述符描述符失败时失败时失败时失败时,返回返回返回返回-1 1 1 1houdomainAF_UNIX:创建只在本机内进行通信的套接字AF_INET:使用IPV4 TCP/IP协议AF_INET6:使用IPV6 TCP/IP协议typeSOCK_STREAM:创建TCP流式套接字SOCK_DGRAM:创建UDP数据报套接字SOCK_RAW:创建原始套接字hou创建一个创建一个创建一个创建一个TCPTCPTCPTCP套接字套接字套接字套接字int sock_fd;

9、sock_fd=socket(AF_INET,SOCK_STREAM,0)if(sock_fd 0)printf(“create error”);exit(1);创建一个创建一个创建一个创建一个UDPUDPUDPUDP套接字套接字套接字套接字sock_fd=socket(AF_INET,SOCK_DGRAM,0)houint bind(int sockfd,struct sockaddr*my_addr,socklen_t addrlen);说说说说明明明明:为一个套接字绑定一个本地为一个套接字绑定一个本地为一个套接字绑定一个本地为一个套接字绑定一个本地IP和端口号和端口号和端口号和端口号参参

10、参参数数数数:sockfd:由函数由函数由函数由函数 socket 创建的套接字创建的套接字创建的套接字创建的套接字my_addr:是一个地址结构是一个地址结构是一个地址结构是一个地址结构sin_addr 设置成设置成设置成设置成INADDR_ANY 绑定到任何网络接口绑定到任何网络接口绑定到任何网络接口绑定到任何网络接口addrlen:my_addr 结构的长度结构的长度结构的长度结构的长度返回值返回值返回值返回值:成功时返回成功时返回成功时返回成功时返回0,0,0,0,失败时返回失败时返回失败时返回失败时返回-1 1 1 1。bind 系统调用houlisten()、connect()函数

11、函数函数函数int listen(int sockfd,int backlog);int connect(int sockfd,const struct sockaddr*serv_addr,socklen_t addrlen);说说说说明明明明1.服务器在调用服务器在调用服务器在调用服务器在调用socket()、bind()之后就会调用之后就会调用之后就会调用之后就会调用listen()来监听这个来监听这个来监听这个来监听这个socket2.客户端调用客户端调用客户端调用客户端调用connect()发出连接请求发出连接请求发出连接请求发出连接请求,服务器端就会服务器端就会服务器端就会服务器端

12、就会接收到这个请求接收到这个请求接收到这个请求接收到这个请求。houlisten()、connect()函数函数函数函数int listen(int sockfd,int backlog);参参参参 数数数数:sockfd:要监听的要监听的要监听的要监听的 socket 描述符描述符描述符描述符backlog:相应相应相应相应socket可以排队的最大连接数可以排队的最大连接数可以排队的最大连接数可以排队的最大连接数返回值返回值返回值返回值:成功时返回成功时返回成功时返回成功时返回0,0,0,0,失败时返回失败时返回失败时返回失败时返回-1 1 1 1。houlisten()、connect(

13、)函数函数函数函数int connect(int sockfd,const struct sockaddr*serv_addr,socklen_t addrlen);参参参参数数数数:sockfd:客户端的客户端的客户端的客户端的 socket 描述符描述符描述符描述符serv_addr:服务器的地址服务器的地址服务器的地址服务器的地址addrlen:参数参数参数参数serv_addr的长度的长度的长度的长度返回值返回值返回值返回值:成功时返回成功时返回成功时返回成功时返回0,0,0,0,失败时返回失败时返回失败时返回失败时返回-1 1 1 1。houaccept()()()()系统调用系统调

14、用系统调用系统调用int accept(int sockfd,struct sockaddr*addr,socklen_t*addrlen);说说说说明明明明:accept调用时,服务器端的程序会一直阻塞,直到有客户程序发出了连接.参参参参数数数数:sockfdsockfdsockfdsockfd:socket描述字addraddraddraddr:客户端地址addrlenaddrlenaddrlenaddrlen:地址长度返回值返回值返回值返回值:执行成功,返回0出错,返回-1.hou网络网络网络网络I/O操作操作操作操作有下面几组有下面几组有下面几组有下面几组:read()/write()

15、recv()/send()readv()/writev()recvmsg()/sendmsg()recvfrom()/sendto()housend()和和和和recv()系统调用系统调用系统调用系统调用int send(int sockfd,const void*msg,int len,int flags)说说说说 明明明明:在在在在TCP套接字上发送数据套接字上发送数据套接字上发送数据套接字上发送数据参参参参 数数数数:sockfd:建立好连接的套接字描述符建立好连接的套接字描述符建立好连接的套接字描述符建立好连接的套接字描述符,accept的返回值的返回值的返回值的返回值。msg:指向存

16、放待发送数据的缓冲区指向存放待发送数据的缓冲区指向存放待发送数据的缓冲区指向存放待发送数据的缓冲区len:待发送的数据的长度待发送的数据的长度待发送的数据的长度待发送的数据的长度flags:一般都把一般都把一般都把一般都把flag设置为设置为设置为设置为0返回值返回值返回值返回值:执行成功执行成功执行成功执行成功,返回实际发送数据的字节数返回实际发送数据的字节数返回实际发送数据的字节数返回实际发送数据的字节数出错出错出错出错,返回返回返回返回-1.housend和和和和recv 系统调用系统调用系统调用系统调用int recv(int sockfd,void*buf,int len,unsig

17、ned int flags)说说说说明明明明:在在在在TCPTCPTCPTCP套接字上接收数据套接字上接收数据套接字上接收数据套接字上接收数据参参参参数数数数:sockfdsockfdsockfdsockfd:套接字描述符套接字描述符套接字描述符套接字描述符(需在连接状态需在连接状态需在连接状态需在连接状态)bufbufbufbuf:指向存放接收数据的缓冲区指向存放接收数据的缓冲区指向存放接收数据的缓冲区指向存放接收数据的缓冲区lenlenlenlen:数据的长度数据的长度数据的长度数据的长度flagsflagsflagsflags:0 0 0 0返回值返回值返回值返回值:执行成功执行成功执行

18、成功执行成功,返回实际接收到的数据的字节数返回实际接收到的数据的字节数返回实际接收到的数据的字节数返回实际接收到的数据的字节数出错出错出错出错,返回返回返回返回-1.1.1.1.housendto 和和和和 recvfrom系统调用系统调用系统调用系统调用int sendto(int sockfd,const void*msg,int len,unsigned int flags,struct sockaddr*to,int tolen)说说说说明明明明:在在在在UDP套接字上发送数据套接字上发送数据套接字上发送数据套接字上发送数据参参参参数数数数:sockfd:套接字描述符套接字描述符套接字

19、描述符套接字描述符(不需要处于连接状态不需要处于连接状态不需要处于连接状态不需要处于连接状态)msg:指向存放待发送数据的缓冲区指向存放待发送数据的缓冲区指向存放待发送数据的缓冲区指向存放待发送数据的缓冲区len:待发送的数据的长度待发送的数据的长度待发送的数据的长度待发送的数据的长度flags:0to:用于指定目的地址用于指定目的地址用于指定目的地址用于指定目的地址,tolen:目的地址的长度目的地址的长度目的地址的长度目的地址的长度返回值返回值返回值返回值:成功成功成功成功,返回实际发送的字节数返回实际发送的字节数返回实际发送的字节数返回实际发送的字节数;出错出错出错出错,返回返回返回返回

20、-1housendto 和和和和 recvfrom系统调用系统调用系统调用系统调用int recvfrom(int sockfd,void*buf,int len,unsigned int flags,struct sockaddr*from,int*fromlen)说说说说明明明明:在在在在UDP套接字上接收数据套接字上接收数据套接字上接收数据套接字上接收数据参参参参数数数数:sockfd:套接字描述符套接字描述符套接字描述符套接字描述符(不需要处于连接状态不需要处于连接状态不需要处于连接状态不需要处于连接状态)buf:指向存放接收数据的缓冲区指向存放接收数据的缓冲区指向存放接收数据的缓冲区指向存放接收数据的缓冲区len:数据的长度数据的长度数据的长度数据的长度flags:0 from:数据的源地址数据的源地址数据的源地址数据的源地址fromlen:地址的长度地址的长度地址的长度地址的长度返回值返回值返回值返回值:成功成功成功成功,返回实际接收的字节数返回实际接收的字节数返回实际接收的字节数返回实际接收的字节数;出错出错出错出错,返回返回返回返回-1

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 技术资料 > 其他杂项

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁