欢迎来到天天文库
浏览记录
ID:27260372
大小:44.00 KB
页数:7页
时间:2018-12-02
《用Winsock控件实现点对点通信.doc》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、用Winsock控件实现点对点通信 中科院电子所 中科院研究生院(北京100039) 郭旭 摘要: Winsock控件是一个专门用于Windows网络编程,与Sockets完全兼容的ActiveX控件,它提供了访问TCP和UDP网络服务的方便途径。网络编程中最常用的是客户机/服务器模型,但是点对点通信模式编程更简单,适合传输数据流少的场合,如控制测量等方面。本文提出了在VC++中用Winsock控件实现Internet中按照二进制数据格
2、式点对点通信的一种常见的方案。关键词:Winsock,点对点通信,网络编程一 引言随着计算机和Internet网络的发展,原先在测量、控制、消费等领域不同设备/仪器之间,大多采用RS232/485或现场总线组建网络等进行数据传输的情况正在改变,特别在要求数据传输速度和可靠性方面的应用产品,转向基于Internet网络的远程传输和应用。网络编程大多基于TCP/IP协议,实现方法有多种,复杂但编程适应性广的方法是调用底层的Winsock API函数或MFC基本类等;简单方便的方法可以采用如Winsock控件。在网络编程中最常用的
3、方案便是客户机/服务器模型,客户应用程序向服务器程序请求服务。另外一种模式是点对点通信,通信双方对等,既有客户机功能又有服务器的功能,编程简单,适合传输数据流少的场合,而且采用简单的UDP协议,易于用微控制器等嵌入式系统实现,在测量控制方面有许多应用。接下将介绍一些网络编程和Winsock控件知识,用VC++实现点对点通信。二 Winsock介绍 WindowsSockets接口是TCP/IP网络最为通用API,已成为Windows网络编程的事实上的标准。它以Unix中流行的Socket接口为范例定义了一套Microsof
4、tWindows下网络编程接口函数库。它不仅包含了人们所熟悉的BerkeleySocket风格的库函数;也包含了一组针对Windows的扩展库函数,以使程序员能充分地利用Windows消息驱动机制进行编程。Socket实际在计算机中提供了一个通信端口,应用程序在网络上传输,接收的信息都通过这个Socket接口来实现。在应用开发中就像使用文件句柄一样,可以对Socket句柄进行读,写操作。 MicroSoft在SocketsAPI库的基础上创建了WinSock控件,专门用于Windows接口,与Sockets完全兼容。,利用Wi
5、nSock控件可以与远程计算机建立连接,Winsock包含有用户数据文报协议(UDP)和传输控制协议(TCP)。Winsock控件对用户来说是不可见的,它提供了访问TCP和UDP网络服务的方便途径。Winsock控件封装了烦琐的技术细节,编写网络应用程序时,不必了解TCP/IP的细节或调用低级的WinsockAPIs。通过设置控件的属性并调用其方法就可轻易连接到一台远程机器上去,并且还可双向交换数据。下面列出有关Winsock控件的属性,方法和事件。属性:LocalIP:本地的IP地址。LocalPort:所用到的本地端口;P
6、rotocol:TCP或UDP协议。RemoteHostIP:对方IP地址。RemotePort:对方数据通信的端口。 方法:Listen:用于服务器程序,等待客户访问。Bind:绑定IP地址和端口。Connect:向远程主机发出连接请求。Accept:接受一个连接请求。Senddata:发送数据。Getdata:取得接收到的数据。Close:关闭当前连接。 事件:DataArrival:新数据到达。ConnectionRequest:对方请求连接时接受连接请求。Error:后台处理中出现错误。.Close:对方关闭连接时
7、出现。三 网络通信协议基础 Winsock控件支持两种协议,TCP协议和UDP协议,都属于用TCP/IP协议。TCP(TransferControlProtocol)是传输控制协议的简称,是基于连接的协议,在数据传输之前必须先建立连接,通信双方是基于客户/服务器模型,必须分别建立客户应用程序和服务器应用程序。UDP(用户数据文报协议)协议是一种无连接协议,通信双方之间的传输类似于传递邮件:消息从一方发送到另一方,但是两者之间没有明确的连接,通信双方是对等的,单次传输的最大数据量取决于具体的网络。 利用Winsock控件创建双方
8、的通信过程如下: 基于TCP协议通信,需要分别建立客户应用程序和服务器应用程序。创建客户应用程序,就必须知道服务器的名或IP地址(RemoteHost属性)和进行“侦听”的端口(RemotePort属性),然后调用Connect方法。创建服务器应用程序,就应设置一个收听端口(
此文档下载收益归作者所有