第5讲数据报套接字技术报告.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
网络编程技术 第五讲 数据报套接字;Outline;Outline;2014/5/29;User Datagram Protocol,用户数据报协议 无连接,适合多对多通信 提供不可靠服务 缺乏流控制 报文模式传输;Outline; 推荐 在可靠的本地环境中运行; 广播和多播应用程序 不推荐 在不可靠的广域网环境中运行; 海量数据传输;服务器通信过程: socket初始化; 创建套接字,指定使用UDP(不可靠的传输服务)进行通信; 指定本地地址和通信端口; 进行数据传输; 关闭套接字; 结束对windows sockets dll的使用。;客户端通信过程: socket初始化; 创建套接字,指定使用UDP(不可靠的传输服务)进行通信; 指定服务器的地址和通信端口; 进行数据传输; 关闭套接字; 结束对windows sockets dll的使用。;9;2014/5/29;非连接模式 sendto(指明目标) recvfrom(记录来源) 连接模式 connect(指明远程端点地址) sendto/send recvfrom/recv;使用连接模式的客户端编程;Outline;函数定义: SOCKET socket(int af, int type, int protocol); 输入参数: af:指定网络地址类型,一般取AF_INET,表示该套接字在Internet域中进行通信; type:指定套接字类型,这里取SOCK_DGRAM,表示创建的套接字是数据报套接字; protocol:指定网络协议,取0表示默认为TCP/IP协议。 返回值: 正确:创建的套接字句柄SOCKET 错误:INVALID_SOCKET (WSAGetLastError) 功能:创建一个套接字,用于以后的数据传输 说明:该函数调用指定了五元组中的“协议”一元。服务器和客户端都要创建,服务器总是先于客户进程启动。 ;函数定义: int bind(SOCKET s, const struct sockaddr* name, int namelen); 输入参数: s:标识一个未捆绑套接字的句柄,用来等待客户机的连接; name:赋予套接字的地址,由struct sockaddr结构表示; namelen:name字段的值长度,以字节为单位。 返回值: 正确:0 错误:SOCKET_ERROR (WSAGetLastError) 功能:将本地地址绑定到所创建的套接字上以在网络上标识该套接字。 ;函数定义: int sendto(SOCKET s, const char FAR* buf, int len, int flags, const struct sockaddr FAR* to, int tolen) 输入参数: s:套接字标识 buf:存放发送数据的缓冲区 len:发送数据的字节总数 flags:对发送数据的处理方式 MSG_DONTROUTE:不要路由;MSG_OOB:带外数据 to:指定数据接收方主机的IP地址和端口号 当要发送的数据是以广播方式发送时,将目的地址to设置为INADDR_BROADCAST tolen:地址to的长度 ;;函数定义: int recvfrom(SOCKET s, char FAR* buf, int len, int flags, struct sockaddr FAR* from, int FAR* fromlen) 输入参数: s:套接字标识 buf:接收数据的缓冲区 len:指明buf的字节数 flags:指定处理数据的方式; MSG_OOB:处理带外数据;MSG_PEEK:保留数据 from:提取数据发送方的IP地址和端口号 fromlen:from的长度;;函数定义: int closesocket(SOCKET s) 输入参数: s:套接字标识 返回值: 成功:0 失败:SOCKET_ERROR 功能:关闭套接字,释放分配给该套接字的资源; ; 怎样指明目标 连接模式 connect(……,struct sockaddr FAR* name,……) 非连接模式 sendto(……,const struct sockaddr FAR* to,……) 怎样获知来源 连接模式 connect(……,struct sockaddr FAR* name,……) 非连接模式 recvfrom(……,struct sockaddr FAR* from,……); ; 发送(send vs. sendto) send() 用于SOCK_STREAM:最常用 用于SOCK_DGRAM:套接字地址通过连接函数connect获得 sendto() 用于SOCK_DG

文档评论(0)

创业文库 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档