1. 首页
  2. 文档大全

第5讲 传送——(3)数据报套接字编程

上传者:2****5 2022-07-25 18:04:12上传 PPT文件 2.49MB
第5讲 传送——(3)数据报套接字编程_第1页 第5讲 传送——(3)数据报套接字编程_第2页 第5讲 传送——(3)数据报套接字编程_第3页

《第5讲 传送——(3)数据报套接字编程》由会员分享,可在线阅读,更多相关《第5讲 传送——(3)数据报套接字编程(34页珍藏版)》请在文档大全上搜索。

1、第第5讲讲 数据报套接字编程数据报套接字编程WindowsWindows网络编程基础网络编程基础内容提要1、UDP:用户数据报协议2、数据报套接字编程模型3、基本函数4、程序举例5、UDP不可靠性问题6、UDP服务器的并发性1.UDP:1.UDP:用户数据报协议用户数据报协议1.1 使用TCP传输数据有什么缺点?服务器服务器三次握手三次握手建立连接建立连接客户客户四次交互四次交互关闭连接关闭连接数据传输数据传输缺点缺点1:传输开销大!:传输开销大!缺点缺点2:资源过耗!:资源过耗!服务器服务器客户客户 1.2 UDP:用户数据报协议多对多通信多对多通信不可靠服务不可靠服务缺乏流控制缺乏流控制报

2、文模式报文模式1.3 数据报套接字编程的适用场合l在可靠的本地环境中运行;在可靠的本地环境中运行;l在不可靠的广域网环境中运行;在不可靠的广域网环境中运行;l广播或多播应用程序;广播或多播应用程序;l海量数据传输。海量数据传输。优点:灵活性优点:灵活性缺点:不可靠性缺点:不可靠性p 不推荐:不推荐:p 推荐:推荐:1.UDP:1.UDP:用户数据报协用户数据报协议议2.2.数据报套接字编程模型数据报套接字编程模型2.1 数据报套接字的通信过程创建套接字,指定使用创建套接字,指定使用UDPUDP(不可靠的传输服务)(不可靠的传输服务)进行通信;进行通信;指定本地和远端指定本地和远端IPIP地址和

3、通信端口;地址和通信端口;关闭套接字;关闭套接字;进行数据传输;进行数据传输;UDP serverbind()socket()recvfrom()blocks until datagram received from clientprocess requestsendto()well-know portsocket()sendto()UDP clientrecvfrom()closesocket()data (request)data (reply)closesocket()2.2 数据报套接字的编程模型问题:server如何处理与多个client交互?2.3 服务器工作原理serverUDP

4、client2client1UDPUDPdatagramdatagramSocket receivebufferListening serverTCPServerchildServerchildclientclientTCPTCPconnectionconnectionconnectionconnectionconnectionconnectionTCP服务器服务器的工作原理的工作原理p 非连接模式非连接模式p 连接模式连接模式l sendto / sendl recvfrom / recvl connect(指明远程端点地址)(指明远程端点地址)l sendto(指明目标)(指明目标)l r

5、ecvfrom(记录来源)(记录来源)2.4 数据报套接字使用模式2.4 数据报套接字使用模式使用连接模式的客户端编程使用连接模式的客户端编程connect()sendto()recvfrom()closesocket()socket()1.UDP:1.UDP:用户数据报协议用户数据报协议2.2.数据报套接字编程模型数据报套接字编程模型3.3.基本函数基本函数 SOCKET socket( int af, int type, int protocol )创建套接字创建套接字socket指定本地地址指定本地地址bindint bind( SOCKET s, const struct sockad

6、dr* name, int namelen )本地端口号本地端口号本地本地IP地址地址SOCK_DGRAM3 基本函数int sendto(SOCKET s, const char FAR* buf, int len, int flags, const struct sockaddr FAR* to, int tolen)发送数据发送数据sendto接收数据接收数据recvfromint recvfrom(SOCKET s, char FAR* buf, int len, int flags, struct sockaddr FAR* from, int FAR* fromlen)目的目的IP

7、目的端口号目的端口号INADDR_BROADCAST是否可通过是否可通过fromfrom参数控制只接收特定来源的报文?参数控制只接收特定来源的报文?否否int send(SOCKET s, const char FAR* buf, int len, int flags)int recv(SOCKET s, char FAR* buf, int len, int flags)来源来源IP来源端口号来源端口号p怎样指明目标?怎样指明目标?连接模式连接模式p 怎样获知来源?怎样获知来源?recvfrom(,struct sockaddr FAR* from,)非连接模式非连接模式connect(,s

8、truct sockaddr FAR* name,)sendto(, const struct sockaddr FAR* to, )连接模式连接模式非连接模式非连接模式connect(,struct sockaddr FAR* name,)问题问题1 1:如何向操作系统注册通信对方的地址?:如何向操作系统注册通信对方的地址?ABABbind()bind()socket()socket()connect()connect()UDP(协议,目标(协议,目标IPIP,目标端口,源,目标端口,源IPIP,源端口),源端口)IP头UDP头数据IP头UDP头数据IP头UDP头数据问题问题2 2:如何控制


文档来源:https://www.renrendoc.com/paper/212729188.html

文档标签:

下载地址