选择显示字体大小

vb网络编程中winsock的使用

xml:namespace prefix = o />

如同上面的内容所描述的,不论您使用udp协议或是tcp协议,winsock控件都可以允许与远程的设备连接,并且在相互之间交换数据。因此,依据上面的面熟而言,不论您使用的是哪一种协议都可以扮演主机端和客户端的角色。

同时,当您在使用winsock控件的过程中,这个控件不会显示在正在执行的窗体之中。换句话说,winsock控件是在后台运行的一种控件。在执行过程之中,不会具有任何选用、可见的控件。那么该如何使用winsock控件呢?它可以被应用在那些类型的应用程序之中呢?以下所列出的内容,是这个控件可以应用的大致范围:

☺将客户端所收集的数据,传送给主机端。

☺点对点的文件传送。

☺聊天室应用程序。

☺电子公告栏。

☺voip(voice over tcp/ip)

因此,当您希望建立上述类型的应用程序之前,必须要学习如何选用适合的协议类型。

2-1如何选用适用的协议

当您准备开始使用winsock控件之前,首要的工作是如何选择适用的协议类型。如同先前所述的,您可以选择tcp 协议或是udp协议中的一种。但是这两种协议的差异点在哪里呢?虽然,它们同样可以使用在inte.net或是inte.net环境之中,但是主要的差异在于连接的状态。以下是这两种协议的特点说明:

☺tcp协议是属于面向连接的协议。所谓的面向连接协议是指——“在您可以交换数据之前,在两个终端设备之间必须连接成功”。同时,在网络的基础理论之中,都会特别强调tcp具有错误核对的功能。也就是说,在数据的传送过程中,如果发生错误或是数据无法传达对方时,tcp协议将会重复尝试着重新传送数据。因此,核对以及重新传送的能力,因此起传输效率会比inte.net协议或是巨域网络协议差一些.netbieui、ipx、appletalk)。

☺udp协议是属于无面向连接协议。这种协议为适用在两个设备之间,适用于信息传送以及数据的传输方面。但是在使用时,必须注意当你将信息送出时,对方可能已经离线,因而无法接收到数据,而您也无法实时察觉到对方已经离线。此外,使用udp协议的最大数据传送量,完全取决于网络的传输量。因此,此种协议较为适用于局域网络。

因此,当您在建立应用程序并且选用适当的协议之前,务必先依据应用程序使用的环境来选择适用的协议。

2-2设置协议

当已经选择好适当的协议之后,接下来,将必须要设置协议的类型。在visable basic之中,共有两种设置协议的方式:“修改属性窗口”以及“程序代码设置”。以下是这两种设置方式的说明。 ☺修改属性窗口(见图2-1)

☺程序代码设置

winsock1.protocol=scktcpprotocol

3.tcp连接的基础

在使用tcp协议来建立应用程序的过程中,首先必须决定应用程序是属于主机端

是客户端来决定应用程序所扮演的角色问题。因此,在建立应用程序的过程中,如果您选择“主机端”时,主机端的winsock控件必须将特定的连接端口号设置在监听模式之中。同时,在客户端提出连接的请求时,主机端可以允许客户端的连接请求,并且完成连接的程序。

因此,一旦主机端与客户端连接成功之后,在这个部设备之间即可开始传送数据,以下的程序代码,具有tcp连接的基本聊天室功能。

3-1tcp连接范例

在此笔者只做简单的-程序介绍,

♣frmserver窗体的设计内容

如图3-1所示

♣frmserver的程序代码

private sub form_load()

‘设置本机连接端口的localport属性的内容

‘请注意!必须是整体值

tcpserver.localport=2000

‘将本机连接端口设置为监听模式

tcpserver.listen

me.caption=”frmsever”

label1.caption=”传送的文字“

label2.caption=”接收的文字“

‘打开frmclient窗体

frmclient.show

end sub

private sub tcpserver_connectionrequest(byval requestid as long)

‘如果tcpserver 控件的状态目前不是处于关

‘闭的状态时,在允许远程设备连接时,必须要关闭目前的控制的运行

if tcpserver.state<>sckclosed then tcpserver..close

‘允许远程设备使用必要的识别码(requestid)与主机进行连接

tcpserver.accept requestid

end sub

private sub txtsend_change()

‘当txtsend控件的内容发生变化时,将txtsend控件的内容,通过tcpserver控件senddata方

‘法,将txtsend控件的内容传送给frmclient

tcpserver.senddata txtsend.text

end sub

private sub tcpserver_dataarrival(byval bytestotal as long)

‘声明即将接收的数据类型

dim strdata as string

‘调用tcpserver控件的getdata方法,将接收的数据以vbstring数据类型,存放在strdata变量之中。

tcpserver.getdata strdata ,vbstring

‘将strdata变量的内容,存放在txtoutput控件之中。

txtreceive.text =strdata

end sud


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范

Valid CSS!

无不良内容,无不良广告,无恶意代码

Valid XHTML 1.0 Transitional

creativecommons