windows网络编程教学课件作者刘琰 第5讲 传送——3数据报套接字编程.ppt

windows网络编程教学课件作者刘琰 第5讲 传送——3数据报套接字编程.ppt

ID:51619058

大小:3.05 MB

页数:34页

时间:2020-03-26

windows网络编程教学课件作者刘琰 第5讲 传送——3数据报套接字编程.ppt_第1页
windows网络编程教学课件作者刘琰 第5讲 传送——3数据报套接字编程.ppt_第2页
windows网络编程教学课件作者刘琰 第5讲 传送——3数据报套接字编程.ppt_第3页
windows网络编程教学课件作者刘琰 第5讲 传送——3数据报套接字编程.ppt_第4页
windows网络编程教学课件作者刘琰 第5讲 传送——3数据报套接字编程.ppt_第5页
资源描述:

《windows网络编程教学课件作者刘琰 第5讲 传送——3数据报套接字编程.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

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

2、数据报协议2.数据报套接字编程模型2.1数据报套接字的通信过程①创建套接字,指定使用UDP(不可靠的传输服务)进行通信;②指定本地和远端IP地址和通信端口;④关闭套接字;③进行数据传输;UDPserverbind()socket()recvfrom()blocksuntildatagramreceivedfromclientprocessrequestsendto()well-knowportsocket()sendto()UDPclientrecvfrom()closesocket()data(request)data(reply)closesocket()2.2数据报套接字的

3、编程模型问题:server如何处理与多个client交互?2.3服务器工作原理serverUDPclient2client1UDPUDPdatagramdatagramSocketreceivebufferListeningserverTCPServerchildServerchildclientclientTCPTCPconnectionconnectionconnectionconnectionconnectionconnectionTCP服务器的工作原理非连接模式连接模式sendto/sendrecvfrom/recvconnect(指明远程端点地址)sendto(指明目标

4、)recvfrom(记录来源)2.4数据报套接字使用模式2.4数据报套接字使用模式使用连接模式的客户端编程connect()sendto()recvfrom()closesocket()socket()1.UDP:用户数据报协议2.数据报套接字编程模型3.基本函数SOCKETsocket(intaf,inttype,intprotocol)①创建套接字——socket②指定本地地址——bindintbind(SOCKETs,conststructsockaddr*name,intnamelen)本地端口号本地IP地址SOCK_DGRAM3基本函数intsendto(SOCKETs

5、,constcharFAR*buf,intlen,intflags,conststructsockaddrFAR*to,inttolen)③发送数据——sendto④接收数据——recvfromintrecvfrom(SOCKETs,charFAR*buf,intlen,intflags,structsockaddrFAR*from,intFAR*fromlen)目的IP+目的端口号INADDR_BROADCAST是否可通过from参数控制只接收特定来源的报文?否intsend(SOCKETs,constcharFAR*buf,intlen,intflags)intrecv(SO

6、CKETs,charFAR*buf,intlen,intflags)来源IP+来源端口号怎样指明目标?连接模式怎样获知来源?recvfrom(……,structsockaddrFAR*from,……)非连接模式connect(……,structsockaddrFAR*name,……)sendto(……,conststructsockaddrFAR*to,……)连接模式非连接模式connect(……,structsockaddrFAR*name,……)问题1:如何向操作系统注册通信对方的地址?ABABbind()socket()connect()UDP(协议,目标IP,目标端口,源

7、IP,源端口)IP头UDP头数据IP头UDP头数据IP头UDP头数据问题2:如何控制可接收的数据报类型?应用进程接收缓存发送(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. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。