vxworks嵌入式网络通信编程.docVIP

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
vxworks嵌入式网络通信编程

实验 网络通信 一、实验目的 熟悉Tornado ULIP仿真网卡驱动的安装和使用; 熟悉VxWorks bootable工程的创建和VxWorks映像的生成; 熟悉VxWorks网络编程。 二、实验原理 本次实验要实现VxWorks平台下的双机通信,需要结合socket、TCP/IP协议等相关知识。 2.1 Socket定义 Socket可以说是一种针对网络的抽象,应用通过它可以来针对网络读写数据。就像通过一个文件的file handler就可以都写数据到存储设备上一样。根据TCP协议和UDP协议的不同,在网络编程方面就有面向两个协议的不同socket,一个是面向字节流的一个是面向报文的。既然是应用通过socket通信,肯定就有一个服务器端和一个客户端。所以它必然就包含有一个对应的IP地址。另外,在这个地址上server要提供一系列的服务,于是就需要有一系列对应的窗口来提供服务。所以就有一个对应的端口号(Port)端口号是一个16位的二进制数字,范围是(0-65535)IP地址加端口号基本上就构成了socket。可以出socket和整个TCP/IP之间的关系。 图2.1 socket与TCP/IP关系示意图 2.2基于TCP或UDP的网络通信 TCP和UDP协议属于传输层协议。其中TCP是基于连接的协议,通过面向连接、端到端可靠数据包发送。“面向连接”就是在正式通信前必须要与对方建立起连接。TCP提供IP环境下的数据可靠传输,它提供的服务包括数据流传送、可靠性、有效流控、全双工操作和多路复用。一个TCP连接必须要经过三次才能建立起来,其中的过程复杂,一般来说,TCP对应的是可靠性要求高的应用而UDP则不提供可靠性、流控或差错恢复功能“面向非连接”就是在正式通信前不必与对方先建立连接,不管对方状态就直接发送。 本实验采用的是UDP方式实现服务器与客户端的双机通信。下面主要介绍UDP Server和UDP Client的程序实现流程。 (1)UDP Server实现流程 使用socket()来建立一个UDP socket,第二个参数OCK_DGRAM。  初始化sockaddr_in结构的变量。 使用bind()把的socket和定义的IP地址和端口绑定。检查bind()是否执行成功,如果有错误就退出这样可以防止服务程序重复运行的问题。 进入无限循环程序,使用recvfrom()进入等待状态,直到接收到客户程序发送的数据,就处理收到的数据,并向客户程序发送反馈。    使用socket()来建立一个UDP socket,第二个参数OCK_DGRAM。初始化sockaddr_in结构的变量,并赋值。这里使用作为连接的服务程序的端口,从命令行参数读取IP地址,并且判断IP地址是否符合要求。 向服务程序发送数据,因使用连接的UDP,所以使用sendto()。  接收服务程序发回的数据,recvfrom()函数。 等待从服务器端返回的数据,。 (1)Client能及时接收到反馈消息,其Server和Client程序运行的 图4.1有消息反馈时服务器端运行结果图 图4.2有消息反馈时客户端端运行结果图 Client向Server发送的消息为“I am Client!”; Server接收到通知消息,将接收到的消息打印出来。并发送反馈确认消息“ack”到Client。 tClient 及时收到反馈确认消息,不会重发。 (2) Server接收到通知消息后,但没有发送反馈消息(程序中去掉Server的发送消息反馈部分),则Client没有接收到反馈消息,其程序运行的结果如图4.3与图4.4所示。 图4.3无消息反馈时服务器端运行结果图 图4.4无消息反馈时客户端运行结果图 Client向Server发送的消息为“I am Client!”; Server接收到通知消息,将接收到的消息打印出来。但没有发送反馈确认消息到Client。 Client 不能及时收到反馈确认消息,定时器出现超时,重新创建socket,进行通知消息的重发,循环上次操作,最大重发次数为 3次。 五、程序调试记录 (1) server与client连通测试。开始时,在成功配置虚拟网卡后,target server与网卡进行连接时,没有更改对应的IP地址,结果在进行ping时,client与server之间一直不能ping通。通过查找资料,找到了问题,更正后的运行结果如图5.1所示。 图5.1 server与client连通测试记录图 (2)ping命令的格式。开始时,以为ping命令的格式与window中DOS下格式相同,结果出错。查找资料对其进行更正,得到正确的结果。 (3)recvfrom的模式更改。当server接收到消息后,不发送反馈确

文档评论(0)

shenlan118 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档