电脑桌面
添加盘古文库-分享文档发现价值到电脑桌面
安装后可以在桌面快捷访问

Winsock控件

来源:莲生三十二作者:开心麻花2025-09-191

Winsock控件(精选3篇)

Winsock控件 第1篇

使用Winsock控件时,首先需要考虑应该使用什么协议。可以使用的协议有两种,一种协议是UDP协议,就是用户数据报协议;另一种是TCP/IP协议,就是传输控制协议。在开发过程中选择哪一种协议是由创建的应用程序决定的,通常通过以下几点来进行选择。

1)收发数据时,应用程序是否需要得到对方的确认或者应答?如果需要,那么使用TCP协议,在收发数据之前首先建立明确的连接。

2)数据量是否特别大?对传输质量是否要求很高?如果是,则使用TCP协议。在连接建立之后,TCP协议将维护连接并确保数据的完整性。不过缺点是需要更多的系统资源。

3)数据发送是间歇的还是在一个会话内?如果发送通知之类的短消息,那么使用UDP协议比较合适。UDP协议适合发送少量的数据,它不需要建立连接。这种连接方式使用较少的资源。

创建UDP应用程序比创建TCP应用程序简单,因为UDP协议不用显式连接,两台计算机的地位是平等的,没有服务器和客户端之分。而程序实现的是发送实时交流的一些短消息,占用较少的资源,因此选择使用UDP协议。

启动VB之后,新建一个工程。利用“工程/部件”命令,打开“部件”对话框。选中“Microsoft Winsock Controls 6.0”复选框将Winsock控件加载到工程中。分别在窗体上添加标签、文本框、按钮以及Winsock控件,设置相关的属性如图1所示。将Winsock控件的Protocol属性设置为sckUDPProtocol。

编写甲方事件代码如下:

发送消息甲方的RemoteHost要设置为乙方主机的主机名或者IP地址,而乙方主机的RemoteHost要设置为甲方主机的主机名或者IP地址。发送消息甲方的RemotePort要与乙方的localport一致,而乙方的RemotePort要与甲方的localport相一致。只有这样,双方才可以正常通信。

按照以上的叙述,再编写第二个工程,工程的界面如图一所示。编写乙方连接按钮事件代码如下:

乙方发送按钮的单击事件Command2_Click()、Winsock控件对象的数据到达触发事件udpWinsock1_DataArrival(ByVal bytesTota As Long)代码可以参考甲方两个事件代码。

调试并在两台联网的计算机上分别运行两程序,就可以实现局域网中的两台计算机之间的消息传输了。UDP应用程序创建、调试通过之后,可以利用菜单设计将该功能模块添加到课件当中。这样学生在利用课件学习的时候,就可以从菜单当中运行该功能,在窗体文本框中输入对方的主机名或者IP地址,在联网并且双方都运行该功能的情况下,就可以实现发送、接收交流信息了。

摘要:Winsock是Microsoft Windows提供的网络编程接口,它提供了基于TCP/IP协议的接口实现。Winsock控件对Winsock API作了封装,在使用该控件时只需要设置好相应的属性,并编写好触发的事件程序代码,就可以编写出网络应用程序。对使用Winsock控件设计具有发送、接收信息功能的应用程序进行了设计、调试和研究。

关键词:UDP,Winsock控件

参考文献

[1]汪晓平,钟军.Visual Basic网络高级编程[M].北京:人民邮电出版社,2006:341-343.

Winsock控件 第2篇

在网络越来越发达的今天,人们对网络的依赖越来越多,越来越离不开网络,由此而产生的聊天工具越来越多,类似QQ、网络聊天时一类的聊天系统的发展日新月异,因此产生了制作一个类似QQ的网路聊天工具的;而且通过制作该程序还能更好的学习网络软件编程知识。在Win32平台上,对于众多的基层网络协议,Winsock是实现访问的首选接口。为实现网络聊天的功能,采用Winsock中的TCP协议编程。

QQ聊天程序采用的是C/S通信模式,即客户/服务模式,它把一个应用划分成功能不同的两个部分,在不同的计算机上运行,其中一个为服务端程序,用来响应和提供固定的服务,一个为客户端程序,用来向服务端提出请求和要求某种服务。

2 用TCP协议模拟实现消息传输服务端与客户端功能框架

2.1 服务器端功能

向各个客户端发布系统消息,接受来自客户端的各种信息并分别处理。功能如图1所示。

(1)登录信息:检查登录信息是否正确,并向客户端返回登录信息上,如信息正确,就将在线用户发给该用户,并将用户的状态发给各在线用户。同时在服务器端显示出来。

(2)聊天信息:转发给消息指定的用户。

(3)申请信息:自动分配8位用户号码,并保存该用户,同时将信息返回客户端。

用户下线:将此用户下线消息发给各客户端,并改写用户在服务器端的状态。

2.2 客户端功能

如图2所示。

(1)登录功能:建立与服务器的连接并登录,能显示登录错误信息上。

(2)界面显示:将在线好友显示在好友列表中,并实现系统托盘,加入工具栏便于操作。

(3)聊天功能:与好友聊天。

(4)聊天纪录:能保存聊天纪录,并能察看聊天纪录。

(5)信息提示:冷却托盘图标提示来信息,并播放不同音乐来提示。

(6)其他:用户登录成功,将保存其号码,以便下次登录时,不必输入而可以直接选择,显示登录时间。

3 部分程序功能的实现

3.1 服务端初始化

使用QQ的人都知道,用QQ聊天第一步是登录,这一步看似简单,其实程序做了不少事情。当用户启动QQ聊天客户端程序,出现登录界面,用户输入用户和密码,点击登录按钮后,服务器接受到客户端的连接请求,根据用户住处数据库中数据验证,如果是合法用户,客户端程序则显示聊天窗体,并从服务端获取在线好友信息,以便建立通信机制,实现好友间直接通信。现在用VB6.0程序设计语言中的Winsock控件中的TCP协议实现,事实上,IP地址和电脑端口(port)就是Windows中负责底层通信的Winsock的主要组成部分。如果想和另一台电脑上的某个程序通信,只要知道这个电脑IP地址,还有这个程序在这台电脑里占用的端口,就可以和它进行通信聊天了。

现在来编写代码。打开VB并新建一个工程。按下Ctrl+T,在Components对话框中选择Microsoft Winsock Control 6.0,确定之后给窗体添加一个Winsock控件,名称设为:WinsockServer。由于服务端需要和所有客户端通信,需要很多Winsock控件,因此把刚加入的Winsock控件Winsock Server改为控件数组,作为服务端程序,还要有一个Winsock用于监听客户端的连接请求,自然就用Winsock Server(0)作为监听Winsock,所以先要设置其通信协议为TCP,然后设置本地端口,以便客户端通过该端口与服务端连接,最后通过Listen方法监听。

3.2 客户端数据定义及发送消息

3.2.1 数据定义

当用户输入用户名和密码单击登录按钮后,在用户机上的客户端程序所做的事情是先请求与服务端程序建立连接,这需要先在客户端程序的登录窗体上加一个Winsock控件,名称设为“Winsock Client”。然后设置通信协议,要连接的服务器IP地址,远程端口号要与服务端监听所设置的本地端口一致,最后通过Connect方法请求与服务端程序建立连接。其中一些常用公用变量定义如下:

3.2.2 客户登录到服务器

登录程序如下:

3.2.3 连接发送消息

具体发送数据通过Send Data方法进行,发送登录用户名和密码的语句如下,数据的格式为:当前日期+数据含义标记字符串+用户名+分割标记符+结束标记符。

3.3 接收消息

3.3.1 服务端接收消息

当有数据到达时,程序会收到消息触发DataArrival事件,所以不论服务端还是客户端程序接收数据的工作在DataArrival事件方法中完成。具体接收数据使用GetData方法进行,为了防止客户端发送来的数据太多,服务端来不及处理,定义一个字符串数组BufferRecy,该数组与WinsockSever控件数组对应,WinsockSever(index)控件收到的数据添加在BufferRecyr(index)中,然后通过结束标记符在BufferRecy(index)中取出一条条数据进行分析。如果是客户登录,则获取用户名和密码,然后通过验证,如果验证为合法用户,则发送“是合法用户”数据标记,然后将用户ID和用户机器的IP等信息置于一个在线用户信息的结构数组中备用。将在线好友的ID及IP地址发送给刚登录的用户,同时也将刚登录客户的ID及IP地址发送给在线好友,以便他们相互之间能通信。如果验证为非法用户,则发送“不是合法用户”数据标记,并将与该客户通信用的Winsock控件卸载。

3.3.2 客户端显示好友在线

当在线好友接受连接后,则将该在线好友的ID显示在列表框List Friend ID中,并将与该在线好友连接的Winsock的下标值加入另一个隐藏的列表框List Sock Index中,两个列表框对应,以便后面从ID列表框中选择好友发送聊天消息时,能马上知道与该好友连接的Winsock下标值。

3.3.3 客户端接收消息

以上程序是整个框架的部分功能,采用Windows98/XP平台以上,VB6.0下调试通过。程序客户端聊天窗口如图3所示。

参考文献

[1]Anthony Jones.Windows网络编程技术.机械工业出版社,2000.

Winsock控件 第3篇

Winsock控件建立在TCP、UDP协议的基础上, 完成与远程计算机的通信。即使对TCP/IP不太熟悉的用户, 使用该控件也可以在十几分钟内创建一个简单的客户机/服务器程序。下面我们对Winsock控件的事件、方法、属性按其在程序中出现的顺序分别作详细的介绍, 以便更好地理解程序源代码。

服务器程序的实现过程是:

(1) 服务器程序必须设置好Local Port属性, 作为侦听端口, 该值为一个整数 (只要是一个其它TCP/IP应用程序没有使用过的值即可) 。

(2) 使用Listen方法进入侦听状态, 等待客户机程序的连接请求。

(3) 客户机程序发出连接请求, 使服务器程序产生Connection Request事件, 该事件得到一个参数request ID。

(4) 服务器程序用Accept方法接受客户机程序的request ID请求。这样, 服务器程序就可以用Send Data方法发送数据了。Accept方法必须用上一步得到的request ID作为其参数。

(5) 当服务器程序接收到数据时, 产生Data Arrival事件, 参数Bytes Total包含接收到的数据字节数。在该事件中, 可以用Get Data方法接收数据。

(6) 如果接受到Close事件, 则用Close方法关闭TCP/IP连接。

客户机程序的实现过程是:

(1) 客户程序设置Remotehost属性, 以便指定运行服务器程序的主机名, 该字符串可在“控制面板|网络|标识|计算机名”中查到。

(2) 设置Remote Port属性, 以便指定服务器程序的侦听端口。

(3) 使用Connect方法, 向服务器提出连接请求。

(4) 服务器接受客户机程序的请求, 客户机程序产生Connect事件, 就可以用Send Data方法发送数据了。

(5) 当客户机程序接收到数据时, 产生Data Arrival事件, 参数Bytes Total包含接收到的数据字节数。在该事件中, 可以用Get Data方法接收数据。

(6) 如果接受到Close事件, 则用Close方法关闭连接。

Winsock控件还有两个重要的属性, 即Protocol和State。Protocol设定使用的协议是TCP还是UDP:取值sck TCPProtocol表示TCP, 取值sck UDPProtocol则表示UDP。因为Winsock控件的缺省设置是sck TCPProtocol, 所以程序中并没有使用Protocol属性。State属性反映的是当前TCP/IP的连接状态, 取值表 (略) 。

下面我们来看看如何实现两台计算机进行实时通讯的。

先在一台计算机上运行服务器程序, 此时窗口上只有一个“退出”按钮。再在另一台计算机上运行客户机程序, 在“连接”按钮右边的文本框中输入服务器的主机名后单击“连接”按钮。如果连接成功, 则服务器和客户机程序窗口都会出现两个文本框。这时, 两端都可以在上面的文本框中输入文字, 这些文字会立即在下面的文本框中出现。

服务器程序使用的控件如下:

(1) Command1:退出按钮;

(2) textsend:发送数据文本框;

(3) Winsockserver:服务器Winsock;

(4) textget:接收数据文本框。

服务器程序的部分源代码: (略)

客户机程序使用的控件如下:

(1) Command1:退出按钮;

(2) Command2:连接按钮;

(3) Winsockclient:客户Winsock;

(4) Text1:主机名文本框;

(5) Textsend:发送数据文本框;

(6) Textget:接收数据文本框;

客户机程序的部分源代码如下所示:

Winsock控件

Winsock控件(精选3篇)Winsock控件 第1篇使用Winsock控件时,首先需要考虑应该使用什么协议。可以使用的协议有两种,一种协议是UDP协议,就...
点击下载文档文档内容为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

确认删除?
回到顶部