数据报套接字编程

数据报套接字编程

ID:41852801

大小:3.01 MB

页数:34页

时间:2019-09-03

数据报套接字编程_第1页
数据报套接字编程_第2页
数据报套接字编程_第3页
数据报套接字编程_第4页
数据报套接字编程_第5页
资源描述:

《数据报套接字编程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、第6讲数据报套接字编程Windows网络编程基础内容提要1、UDP:用户数据报协议2、数据报套接字编程模型3、基本函数4、程序举例5、UDP不可靠性问题6、UDP服务器的并发性1.UDP:用户数据报协议1.1使用TCP传输数据有什么缺点?……服务器三次握手建立连接客户四次交互关闭连接数据传输缺点1:传输开销大!缺点2:资源过耗!服务器客户×××1.2UDP:用户数据报协议多对多通信不可靠服务缺乏流控制报文模式1.3数据报套接字编程的适用场合在可靠的本地环境中运行;在不可靠的广域网环境中运行;广播或多播应用程序;海量

2、数据传输。优点:灵活性缺点:不可靠性不推荐:推荐:1.UDP:用户数据报协议2.数据报套接字编程模型2.1数据报套接字的通信过程①创建套接字,指定使用UDP(不可靠的传输服务)进行通信;②指定本地和远端IP地址和通信端口;④关闭套接字;③进行数据传输;UDPserverbind()socket()recvfrom()blocksuntildatagramreceivedfromclientprocessrequestsendto()well-knowportsocket()sendto()UDPclientrecv

3、from()closesocket()data(request)data(reply)closesocket()2.2数据报套接字的编程模型问题:server如何处理与多个client交互?2.3服务器工作原理serverUDPclient2client1UDPUDPdatagramdatagramSocketreceivebufferListeningserverTCPServerchildServerchildclientclientTCPTCPconnectionconnectionconnectioncon

4、nectionconnectionconnectionTCP服务器的工作原理非连接模式连接模式sendto/sendrecvfrom/recvconnect(指明远程端点地址)sendto(指明目标)recvfrom(记录来源)2.4数据报套接字使用模式2.4数据报套接字使用模式使用连接模式的客户端编程connect()sendto()recvfrom()closesocket()socket()1.UDP:用户数据报协议2.数据报套接字编程模型3.基本函数SOCKETsocket(intaf,inttype,in

5、tprotocol)①创建套接字——socket②指定本地地址——bindintbind(SOCKETs,conststructsockaddr*name,intnamelen)本地端口号本地IP地址SOCK_DGRAM3基本函数intsendto(SOCKETs,constcharFAR*buf,intlen,intflags,conststructsockaddrFAR*to,inttolen)③发送数据——sendto④接收数据——recvfromintrecvfrom(SOCKETs,charFAR*buf

6、,intlen,intflags,structsockaddrFAR*from,intFAR*fromlen)目的IP+目的端口号INADDR_BROADCAST是否可通过from参数控制只接收特定来源的报文?否intsend(SOCKETs,constcharFAR*buf,intlen,intflags)intrecv(SOCKETs,charFAR*buf,intlen,intflags)来源IP+来源端口号怎样指明目标?连接模式怎样获知来源?recvfrom(……,structsockaddrFAR*fro

7、m,……)非连接模式connect(……,structsockaddrFAR*name,……)sendto(……,conststructsockaddrFAR*to,……)连接模式非连接模式connect(……,structsockaddrFAR*name,……)问题1:如何向操作系统注册通信对方的地址?ABABbind()socket()connect()UDP(协议,目标IP,目标端口,源IP,源端口)IP头UDP头数据IP头UDP头数据IP头UDP头数据问题2:如何控制可接收的数据报类型?应用进程接收缓存发送

8、(sendvs.sendto)Send用于SOCK_STREAM:最常用用于SOCK_DGRAM:套接字地址通过连接函数connect获得Sendto用于SOCK_DGRAM:最常用用于SOCK_STREAM:to和tolen被忽略,此时,sendto=send问题3:如何选择合适的发送函数?接收(recvvs.recvfrom)Recv:只接收已确定了连接

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

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

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