选择显示字体大小

用vb5 winsock控件创建tcp/ip客户

  随着windows 95中文版和windows nt server 4.0中文版的流行, microsoft公司推出了相应平台上的开发软件: visual basic 5.0 中文企业 版。它为windows环境下的网络开发提供了强大的工具,winsock控件就是其中之一。

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

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

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

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

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

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

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

  (6)如果接受到close事件,则用close方法关闭tcp/ip连接。

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

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

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

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

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

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

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

  winsock控件还有两个重要的属性,即protocol和state。protocol设定使用的协议是tcp还是udp:取值scktcpprotocol表示tcp, 取值sckudpprotocol则表示udp。因为winsock控件的缺省设置是sck protocol,所以程序中并没有使用protocol属性。state属性反映的是当前tcp/ip的连接状态,取值如表1所示。

  表1 winsock控件的state属性及其描述

常数 描述
sckclosed 0 缺省值,关闭。
sckopen 1 打开。
scklistening 2 侦听
sckconnectionpending 3 连接挂起
sckresolvinghost 4 识别主机。
sckhostresolved 5 已识别主机
sckconnecting 6 正在连接。
sckconnected 7 已连接。
sckclosing 8 同级人员正在关闭连接。
sckerror 9    错误。

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

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

  (1)command1:退出按钮;

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

  (3)winsockserver: 服务器winsock;

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

  服务器程序的界面如图所示。

  服务器程序的源代码如下:

  private sub command1_click()

   end

  end sub

  

  private sub form_load()

   textsend.visible = false

   textget.visible = false

   winsockserver.localport = 1001

   winsockserver.listen

  end sub

  

  private sub textsend_change()

   winsockserver.senddata textsend.text

  end sub

  

  private sub winsockserver_close()

   winsockserver.close

   end

  end sub

  

  private sub winsockserver_connectionrequest(byval requestid as long)

   textsend.visible = true

   textget.visible = true

   if winsockserver.state <> sckclosed then winsockserver.close

   winsockserver.accept requestid

  end sub

  

  private sub winsockserver_dataarrival(byval bytestotal as long)

   dim tmpstr as string

   winsockserver.getdata tmpstr

   textget.text = tmpstr

  end sub

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

  (1)command1:退出按钮;

  (2)command2:连接按钮;

  (3)winsockclient:客户winsock;

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

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

  (6)textget:接收数据文本框;   客户机程序的界面如图所示。

  客户机程序的源代码如下:

  private sub command1_click()

   end

  end sub

  

  private sub command2_click()

   winsockclient.connect

  end sub

  

  private sub form_load()

   textsend.visible = false

   textget.visible = false

   winsockclient.remoteport = 1001

   winsockclient.remotehost = "sccdsz"

  end sub

  

  private sub text1_change()

   winsockclient.remotehost = text1.text

  end sub

  

  private sub textsend_change()

   winsockclient.senddata textsend.text

  end sub

  

  private sub winsockclient_close()

   winsockclient.close

   end

  end sub

  

  private sub winsockclient_connect()

   textsend.visible = true

   textget.visible = true

   command2.visible = false

  end sub

  

  private sub winsockclient_dataarrival(byval bytestotal as long)

   dim tmpstr as string

   winsockclient.getdata tmpstr

   textget.text = tmpstr

  end sub


 


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

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