您现在的位置: 中国男护士网 >> 考试频道 >> 计算机等级 >> 二级辅导 >> VB >> 辅导 >> 正文    
  用VB创建自己的通信程序 【注册男护士专用博客】          

用VB创建自己的通信程序

www.nanhushi.com     佚名   不详 

  Winsock控件建立在TCP、UDP的协议基础上,以完成计算机网络间的通信。下面将详细的介绍具体的程序创建过程,以便使大家更好的理解程序的源代码。

  服务器端程序的运行过程是:

  (1)服务器端要设置好侦听端口即LocalPort属性,作为侦听端口的值必须是一个整数(一定要是其它TCP/IP应用程序没有用过的值,并且不能与系统缺省端口冲突)。

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

  (3)当客户机发出连接请求时,使服务器产生一个ConnectionRequest事件,且该事件得到一个参数equestID。

  (4)服务器程序用Accept方法接受客户机requestID请求。这样,服务器程序便可以用SendData方法来发送数据了。但是,Accept方法必须用上一个步得到的requestID作为其参数。

  (5)当服务器程序接收到数据时,便会产生一个DataArrial事件,参数BytesTotal包含接收到的数据字节数。在该事件中,可以用GetData方法接收数据。

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

   客户机的程序的运行过程是:

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

  (2)设置RemotePort属性,以便指定服务器程序的侦听端口(其设置方法与服务器端类似)。

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

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

  (5)当客户机程序接收到数据时,便会产生DataArrival事件,参数BytesTotal包含接收到的数据字节数。类似的在该事件中也可以用GetData方法接收数据。

  (6)如果客户机程序接收到Close,则用Close方法关闭连接。

  使用说明:

  本程序实现了两台计算机之间的自由通信。先将编译好的程序分别放入两台已联网的计算机的 开始 启动 中,这样每次启动时,程序将会自动运行,程序启动时将以最小化的形式出现在任务栏中,当用户使用时可以通过点击任务栏上的该程序图标来激活该程序,一方将程序激活后,在“请输入所要连接的主机名:“右侧的编辑框中输入需要连接的计算机名,并敲“连接”键便可连接成功。此时在“接收窗口:”下的编辑框中将会出现“连接成功”的提示。然后就可以在“发送窗口:”下的编辑框中输入要说的话了,输入完毕后敲“发送”键后便可使另一方收到你的话了,如果另一方的程序尚未正常化,那么另一方程序将发出提示音并使任务栏中程序的图标闪烁,直到另一方将程序激活为正常化并与你对话为止。如果暂时停止对话可以点击该程序的极小化按钮将程序最小化,一旦需要再次通话可直接激活该程序发送过去,如果另一方的程序尚未正常化,那么程序仍将发出提示音并使开使栏中程序的小图标闪烁,直到另一方将程序正常化并与你对话为止。所以,无论什么时候想与对方通话只要对方开了机便可以实现。当需要断开连接时请按“关闭”键,该程序能自动发送结束消息,使对方能够知道你已断开连接,以结束程序运行。

  FORM的构造如下:

  Timer控件----MMXControl控件----Gettest控件

  Winsock控件----CommandButton控件----Test控件

  一段的源程序如下:

  Dim sign As Boolean

  Dim flashsign As Boolean

  Dim con As Boolean

  Private Sub transfer_Click()

  On Error GoTo transfererror

  Timer1.Enabled = False

  gettext.Text = " 陈涛说:" + sendtext.Text + Chr(13) + Chr(10) + gettext.Text

  Dim say As String

  If sign = True Then

  say = " 陈涛说:" + sendtext.Text + Chr(13) + Chr(10)

  Winsockout.SendData say

  Else

  say = " 陈涛说:" + sendtext.Text + Chr(13) + Chr(10)

  Winsock1.SendData say

  End If

  sendtext.Text = ""

  Exit Sub

  transfererror:

  Dim a As String

  a = " 计算机还没有进入网络或者是它的相应程序没有运行!"

  MsgBox (a)

  End

  Exit Sub

  End Sub

  Private Sub conbut_Click()

  On Error GoTo connecterror

  Winsockout.RemoteHost = hostnametext.Text

  Winsockout.Connect

  sign = True

  conbut.Default = False

  transfer.Default = True

  Exit Sub

  connecterror:

  Dim a As String

  a = "计算机还没有进入网络或者是它的相应程序没有运行!"

  Dim b As String

  b = " 要连接的机器名输入错误,"

  MsgBox (b + a)

  End

  Exit Sub

  End Sub

  Private Sub exitbut_Click()

  On Error GoTo exiterror

  If con = True Then

  End

  End If

  If sign = True Then

  Winsockout.SendData "中断联接!"

  Else

  Winsock1.SendData "中断联接!"

  End If

  Exit Sub

  exiterror:

  Dim a As String

  a = "计算机还没有进入网络或者是它的相应程序没有运行!"

  MsgBox (a)

  End

  Exit Sub

  End Sub


  Private Sub Form_Load()

  Winsock1.Listen

  sign = False

  flashsign = True

  Timer1.Enabled = False

  con = False

  conbut.Default = True

  End Sub

  Private Sub hostnametext_Change()

  conbut.Enabled = True

  End Sub

  Private Sub Timer1_Timer()

  If Form1.WindowState = 1 Then

  If flashsign = True Then

  Form1.Icon = LoadPicture(App.Path + "\zhcn010.ico")

  flashsign = False

  ElseIf flashsign = False Then

  Form1.Icon = LoadPicture(App.Path + "\zhcn020.ico")

  flashsign = True

  End If

  End If

  End Sub

  Private Sub Winsock1_Close()

  conbut.Enabled = True

  hostnametext.Enabled = True

  Winsock1.Close

  End Sub

  Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)

  If Winsock1.State <> 0 Then

  Winsock1.Close

  End If

  transfer.Default = True

  If Form1.WindowState = 1 Then

  Timer1.Enabled = True

  MMControl1.Notify = False

  Form1.MMControl1.Wait = True

  Form1.MMControl1.Shareable = False

  Form1.MMControl1.DeviceType = "waveaudio"

  Form1.MMControl1.filename = App.Path + "\mcitest.wav"

  Form1.MMControl1.Command = "Open"

  Form1.MMControl1.Command = "play"

  Form1.MMControl1.Command = "prev"

  End If

  conbut.Enabled = False

  hostnametext.Enabled = False

  sendtext.Enabled = True

  gettext.Enabled = True

  gettext.Text = " 连 接 成 功!" + Chr(13) + Chr(10)

  sign = False

  Winsock1.Accept requestID

  End Sub

  Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

  Dim str As String

  If Form1.WindowState = 1 Then

  Timer1.Enabled = True

  MMControl1.Notify = False

  Form1.MMControl1.Wait = True

  Form1.MMControl1.Shareable = False

  Form1.MMControl1.DeviceType = "waveaudio"

  Form1.MMControl1.filename = App.Path + "\mcitest.wav"

  Form1.MMControl1.Command = "Open"

  Form1.MMControl1.Command = "play"

  Form1.MMControl1.Command = "prev"

  End If

  Winsock1.GetData str

  If str = "中断联接!"Then

  con = True

  Winsock1.SendData "可以中断联接!"

  ElseIf str = "可以中断联接!" Then

  End

  End If

  gettext.Text = str + gettext.Text

  End Sub

  Private Sub Winsockout_Close()

  hostnametext.Enabled = True

  Winsockout.Close

  End Sub

  Private Sub Winsockout_Connect()

  Form1.WindowState = 0

  gettext.Enabled = True

  sendtext.Enabled = True

  conbut.Enabled = False

  gettext.Text = "连接成功!" + Chr(13) + Chr(10)

  End Sub

  Private Sub Winsockout_DataAr

 

文章录入:杜斌    责任编辑:杜斌 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
     

    联 系 信 息
    QQ:88236621
    电话:15853773350
    E-Mail:malenurse@163.com
    免费发布招聘信息
    做中国最专业男护士门户网站
    最 新 热 门
    最 新 推 荐
    相 关 文 章
    没有相关文章
    专 题 栏 目

      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)                            【进男护士社区逛逛】
    姓 名:
    * 游客填写  ·注册用户 ·忘记密码
    主 页:

    评 分:
    1分 2分 3分 4分 5分
    评论内容:
  • 请遵守《互联网电子公告服务管理规定》及中华人民共和国其他各项有关法律法规。
  • 严禁发表危害国家安全、损害国家利益、破坏民族团结、破坏国家宗教政策、破坏社会稳定、侮辱、诽谤、教唆、淫秽等内容的评论 。
  • 用户需对自己在使用本站服务过程中的行为承担法律责任(直接或间接导致的)。
  • 本站管理员有权保留或删除评论内容。
  • 评论内容只代表网友个人观点,与本网站立场无关。