网络程序设计-03-WinSock编程详解-UDP通信编程-v101.ppt_第1页
网络程序设计-03-WinSock编程详解-UDP通信编程-v101.ppt_第2页
网络程序设计-03-WinSock编程详解-UDP通信编程-v101.ppt_第3页
网络程序设计-03-WinSock编程详解-UDP通信编程-v101.ppt_第4页
网络程序设计-03-WinSock编程详解-UDP通信编程-v101.ppt_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、WinSock编程详解,网络程序设计,2,回顾:WinSock编程接口,WinSock是什么 WinSock有什么 WinSock怎么用 WinSock加载与释放 WinSock寻址,3,WinSock编程详解,我们知道客户机和服务器进行通信时,消息的传递可以通过TCP协议,也可以通过UDP协议。 你还记得TCP和UDP的区别吗? 本次课:UDP通信编程详解 下次课:TCP通信编程详解,4,WinSock编程详解-UDP通信编程,UDP通信编程流程 UDP通信编程效果演示 UDP客户端源代码分析 UDP服务器源代码分析 主要函数的功能和用法 动手实践,5,WinSock编程详解-UDP通信编程

2、,UDP通信编程流程 UDP通信编程效果演示 UDP客户端源代码分析 UDP服务器源代码分析 主要函数的功能和用法 动手实践,6,1.UDP通信编程流程,7,WinSock编程详解-UDP通信编程,UDP通信编程流程 UDP通信编程效果演示 UDP客户端源代码分析 UDP服务器源代码分析 主要函数的功能和用法 动手实践,8,2.UDP通信编程效果演示,9,WinSock编程详解-UDP通信编程,UDP通信编程流程 UDP通信编程效果演示 UDP客户端源代码分析 UDP服务器源代码分析 主要函数的功能和用法 动手实践,10,3.UDP通信客户端源代码分析,11,3.UDP通信客户端源代码分析,思

3、考:在没有编写UDP服务器时,如何测试你的客户端程序? 方法:使用Sockect调试工具。,12,WinSock编程详解-UDP通信编程,UDP通信编程流程 UDP通信编程效果演示 UDP客户端源代码分析 UDP服务器源代码分析 主要函数的功能和用法 动手实践,13,4.UDP通信服务器源代码分析,14,4.UDP通信服务器源代码分析,使用Sockect调试工具,在没有编写UDP客户端时,测试你的服务器程序。,15,4.UDP通信服务器源代码分析,UDP客户端与服务器程序互通测试:,16,WinSock编程详解-UDP通信编程,UDP通信编程流程 UDP通信编程效果演示 UDP客户端源代码分析

4、 UDP服务器源代码分析 主要函数的功能和用法 动手实践,17,5.主要函数功能和用法,5.1 socket和closesocket函数 功能:创建一个套接字对象。 SOCKET sockect( int af, /指定地址格式,winsock仅支持AF_INET int type, /指定套接字类型 int protocol /配合type参数使用,指定使用的协议类型 ) 返回值:套接字句柄。函数执行失败时返回-1(INVALID_SOCKET)。可通过WSAGetLastError()获取相应错误代码。 type参数:Winsock支持三种套接字类型: SOCK_STREAM:流套接字,T

5、CP协议; SOCK_DGRAM:数据报套接字,UDP协议; SOCK_RAW:原始套接字,自己封装报文。,18,5.主要函数功能和用法,5.1 socket和closesocket函数 当不使用socket()创建的套接字时,就调用closesocket()函数将它关闭。 函数用法如下: int closesocket(SOCKET s); /s为要关闭的套接字句句柄 引申:你知道什么是句柄吗?,19,5.主要函数功能和用法,5.2 bind函数 功能:将套接字关联到本地地址(和端口)。 int bind( SOCKET s, /套接字句柄 const struct sockaddr *na

6、me, /要关联的本地地址 int namelen /地址的长度 ) 返回值:函数执行成功返回0,否则返回SOCKET_ERROR。可通过WSAGetLastError()获取相应错误代码。,20,5.主要函数功能和用法,5.3 sendto函数 功能:主要用于SOCK_DGRAM类型套接字向to参数指定的套接字发送数据报。对于SOCK_STREAM类型套接字,to和tolen参数被忽略。 int sendto(SOCKET s, /套接字句柄 const char FAR *buf, /要发送的数据的缓冲区地址 int len, /缓冲区长度 int flags, /指定调用方式,通常设为0

7、 const struct sockaddr FAR *to, /目标地址 int tolen ); /目标地址长度 返回值:执行成功返回接收数据的长度(可能小于len),否则返回SOCKET_ERROR。可通过WSAGetLastError()获取相应错误代码。 引申:你知道FAR指针的含义吗?,21,5.主要函数功能和用法,5.4 recvfrom函数 功能:主要用于SOCK_DGRAM类型套接口从from参数指定端的套接字接收数据报。也可用于SOCK_STREAM类型的套接字。 int recvfrom( SOCKET s, /套接字句柄 const char FAR *buf, /接收

8、数据的缓冲区地址 int len, /缓冲区长度 int flags, /指定调用方式,通常设为0 struct sockaddr FAR *from, /源地址 int FAR *fromlen); /源地址长度 返回值: 若无错误发生,recvfrom()返回读入的字节数。如果连接已中止,返回0。否则的话,返回SOCKET_ERROR错误,应用程序可通过WSAGetLastError()获取相应错误代码。,22,6.动手实践,动手实践环节,基于UDP协议编写C/S通信程序,要求: 服务器监听8001端口,客户机发送信息为“你的学号和姓名”,服务器收到信息后进行显示。 注意:请自己手敲代码! 可以抄写示例,但不要拷贝示例!,23,课后作业,请画出使用Wi

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论