AIS接收数据程序.docx

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
PAGE PAGE # AIS 数据接收程序 唐存宝 交通信息工程及控制 3250 一 设计目的: 实现 AIS 经由网络传输的数据接收,并显示在 MFC 的控件内;同时,为了 模仿 AIS 数据发送的方式,简单设计了 AIS 发送数据的客户端。 二 设计意义: 显示解码前的 AIS 信息,对 AIS 信息解码, AIS 数据库编程打下根基。 可以 对这些数据进行数理统计,发现其规律,从而更好掌握 AIS 水域交通流状况。 三 基础简介 (1) 网络编程基础知识 通信协议: TCP/UDP/IP 协议,一般称为 TCP/IP 协议。 UDP 是用户数据报协议,该协议通信时并不建立可靠的连接,所以不能保 证数据能否达到,也不知道在什么时间到达,也不能保证数据完整性 (即在传输 过程中有可能丢失数据 );在接收方,数据有可能次序改变,也有可能重复收到 一条数据。 TCP 是传输控制协议,这是网络应用程序首要的协议。它是一个大块数据 无差错输送的协议, 即使传输的数据报是以错误的次序到达的, TCP 协议却能使 数据报按发送的次序重新组合。它包括了 HTTP, FTP这两种协议。TCP协议建 立了一个在两台计算机之间全双工、 点对点的连接。 这种连接的每一个端上的程 序都使用它自己的端口。 IP 地址和端口号组合称为一个套接字。总之, TCP 协 议在通信双方间建立了一条可靠,无数据差错,无数据重复的连接。当然,这不 需要我们来完成,由计算机自己来完成。 UDP 和 TCP 协议相比, UDP 通信会比 TCP 通信快些,因为 UDP 通信双方 不需要建立连接;而 TCP 需要建立可靠的连接,因此在一个庞大的聊天室中用 UDP 协议也未尝不可。但是,对于不容许丢失的数据、非常重要的数据,一般 采用 TCP 协议。 套接字 IP 地和端口号组合成一个套接字。好比用固定电话通信一样,要想打电话, 你必须有电话机(相当于你有IP),有个电话机,但你还不知道跟哪一部电话通 讯,好了,电话号码就指明了我们通讯的电话, 也就相当于端口指明了要和我们 通信的应用程序。 否则,一台电脑上的那么多网络应用程序, 谁知道哪一个程序 会负责数据的收发工作?电话机和端口就组成了的套接字。 好了,有了电话机,应使它处于正常工作状态,也就是侦听状态,以便别人 打来电话时, 我们能接收。 在服务器应用程序上应有一套接字处于侦听状态, 以 使客户机一有数据请求便能侦听到。基于 TCP 的流式套接字,不仅要有侦听套 接字,而且有连接(通讯)套接字以保证可靠连接。当然,基于 UDP 的,就不 需要这种连接套接字了。 异步非阻塞通讯和同步阻塞通讯 假如有一接收数据的函数, 若没有数据到来, 它一直等待, 其它函数在此时 无法执行。直至时此函数接收到数据,它才返回。这样的通信方式就是阻塞的, 同时也是同步的(毕竟你必须等待它执行完嘛!)。假如一接收数据函数,有没有 数据到来,它立即返回,这就是异步非阻塞方式了。 好比一个体育老师测试100名学生400米的成绩,他可以有两种方式来测试: 一种方式是:先让第一个学生跑,等跑完后记录时间,再让下一个跑,好了,它 跑的过程中,你必须等待,这就是同步;同时,其它同学在这个时间不能跑,这 就是阻塞。另一种办法是:先让第一个同学跑,10秒再跑一个,再过10秒又跑 一个,这样不用等一个同学跑完又有同学跑, 这就是异步,这种方式在一个学生 跑时其它学生也不阻挡其它学生跑,这就是非阻塞。 MFC类(具体是CAsyncSocket, CSocket)屏蔽了 TCP/IP的细节,屏蔽了异 步同步,阻塞非阻塞的实现细节,对于初学网络编程的可以方便快捷开发网络应 用程序。如果要想了解同步、异步、阻塞与非阻塞等,最好还是用 Win Sock API 函数来编程。事实上,CAsy ncSocket, CSocket就是 Win Sock API的良好封装。 CSocket是内载了多线程的机制,不信的话你可以设计一个单击按纽,一旦 单击这个按纽就弹出一个模态的消息框。 你在数据接收时,点击按纽,消息框弹 出,但是接收数据的函数却仍然执行, 这就至少说明了两点:CSocket是阻塞的; CSocket类的数据收发实际开辟了另一线程。实际上,一个 CSocket类及其派生 类的对象中有一个套接字窗口句柄。 CSocketWnd各种的网络事件都是由此窗口 自发调用的。 (2) AIS有关介绍 AIS是工作在VHF海上移动频段,其工作频率为161.975MHz和 162.025MHz。它是通过自组织时分多址接入(SOTDMA )的通信协议方式自主 地向外播发船舶的静态与动态信息。AIS能够实现船舶、船岸间的船舶标识、位 置、航向、航速等航行信息的自动交换

文档评论(0)

dingfulaowang + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档