学习啦 > 论文大全 > 学科论文 > 计算机论文 > 浅谈用VB实现聊天讨论室和点对点会话论文

浅谈用VB实现聊天讨论室和点对点会话论文

时间: 谢桦657 分享

学习啦在线学习网浅谈用VB实现聊天讨论室和点对点会话论文

  Visual Basic是一种由 公司开发的结构化的、模块化的、面向对象的、包含协助开发环境的事件驱动为机制的可视化程序设计语言。从任何标准来说,VB都是世界上使用人数最多的语言——不管是盛赞VB的开发者还是抱怨VB的开发者的数量。它源自于BASIC编程语言。VB拥有图形用户界面(GUI)和快速应用程序开发(RAD)系统,可以轻易的使用DAO、RDO、ADO连接数据库,或者轻松的创建ActiveX控件。程序员可以轻松的使用VB提供的组件快速建立一个应用程序。以下是学习啦小编今天为大家精心准备的:浅谈用VB实现聊天讨论室和点对点会话相关论文。内容仅供参考,欢迎阅读!

  浅谈用VB实现聊天讨论室和点对点会话全文如下:

  在一个单位内部或通过广域协议(如X.25)互联的行业内部都有几十或上万台计算机互联,用Intranet虽然可以建立聊天室,但实现点对点实时对话却比较困难。本人用Winsock和VB自制了一套聊天室和对话系统,特拿来供同行们参考。

  一·Winsock的主要属性、事件和方法

  Winsock是不可见控件,控件文件名是MSWINSCK.OCX,全称为Mcirosoft winsock control,使用时要将此控件调入工具箱。

  1·属性:①Protocol=0 //使用TCP协议;

学习啦在线学习网   ②RemoteHost //准备连接远程机的IP地址

学习啦在线学习网   ③RemotePort //连接远程机的IP端口号 (1024—65535之间)

学习啦在线学习网   ④LocalPort //本地机监听IP端口号必须与呼叫机端口号相同

  2·方法:①connect //申请连接远程机

学习啦在线学习网   ②listen //设置监听

  ③accept //建立实际连接

  ④senddata //发送数据

  ⑤getdata //接收数据

  ⑥close //关闭连接

  3·事件:①connectionrequest //一方请求连接时另一方产生

学习啦在线学习网   ②connect //一方机接受连接时另一方产生

学习啦在线学习网   ③close //一方机关闭连接时另一方产生

  ④dataArrival //一方发送数据另一方产生

  ⑤error //请求连接失败时产生

  二·制作方法

学习啦在线学习网   ⑴ 在一工程中添加两个表单form1(模拟客户端)、form2(模拟服务器端)。

  form1中装入控件:

  控件名

  主要属性

  用 途

  VB.Form form1

  caption=”雷萌聊天室”

  controlbox=0 ‘False

  模拟客户机表单

  VB.Textbox text1

  multiline=-1 ‘True

  scrollbars=3 ‘Bath

  用于输入发往聊天室的信息

  VB.Textbox text2

学习啦在线学习网   locked=-1 ‘True

学习啦在线学习网   multiline=-1 ‘True

学习啦在线学习网   scrollbars=3 ‘Bath

学习啦在线学习网   显示从聊天室发来的信息

  VB.Combobox combo1

  text=”10.84.234.11” ‘任定默认地址

  放入常用的地址

学习啦在线学习网   VB.Commandbutton comm1

学习啦在线学习网   caption=”退出”

学习啦在线学习网   最小化form1

  VB.Commandbutton comm2

  caption=”连接”

  请求与输入的地址连接

学习啦在线学习网   VB.Commandbutton send

  caption=”发送”

  发送Text1中的内容

学习啦在线学习网   VB.Label label1

学习啦在线学习网   caption=“请在此输入发表的信息”

  Text1的框标

学习啦在线学习网   VB.Label label2

学习啦在线学习网   caption=“聊天室或对方的信息”

  Text2的框标

  VB.Label label3

  caption=”等待连接”

  显示连接状态信息

学习啦在线学习网   VB.Label label4

  caption=”聊天室或对方地址”

  用于指示Combo1

  VB.Label label5

  caption=”操作:选地址连接,连接成功看到聊天室内容后再输信息发送”

  操作说明

学习啦在线学习网   VB.Timer timer1

学习啦在线学习网   interval=6000; enabled=false

  防止连接超时

学习啦在线学习网   MSWinsocklib.winsock a

  用于数据传输

学习啦在线学习网   form2中装入控件:

  控件名

  主要属性

  用 途

学习啦在线学习网   VB.Form form2

  caption=”接收信息”

  controlbox=0 ‘False

  模拟客户机表单

  VB.Commandbutton command1

  caption=”返回”

  隐含Form2窗口

  VB.Commandbutton command2

  caption=”对话”

  点对点会话时用此直接启动Form1

学习啦在线学习网   VB.Textbox text1

  locked=-1 ‘True

  multiline=-1 ‘True

  scrollbars=3 ‘Bath

  存放聊天或对话内容

  VB.Label label1

学习啦在线学习网   caption=”接收的信息”

  Text1的框标

  MSWinsocklib.Winsock a

  用于监听

  MSWinsocklib.Winsock b

学习啦在线学习网   用于传送聊天信息

  ⑵ 在Form1的各控件事件中加入如下代码:

学习啦在线学习网   Dim flag As Boolean 注释:连接状态变量

  Private Sub a_Connect()

学习啦在线学习网   flag = True

  End Sub

  Private Sub a_DataArrival(ByVal bytesTotal As Long)

  Dim i As String

  a.GetData i

  Label3.Caption = "连接成功!"

  Comm2.MousePointer = 0

学习啦在线学习网   Form1.MousePointer = 0

学习啦在线学习网   Timer1.Enabled = False

  If i = Chr(0) Then

  Text2.Text = "你是今天第一个进入本聊天室的客户。" + Chr(13) + Chr(10)

  Else

  Text2.Text = Text2.Text + i

  End If

  Text2.SelStart = Len(Text2.Text)

学习啦在线学习网   Send.MousePointer = 0

  Combo1.Enabled = False

学习啦在线学习网   Comm2.Caption = "断开连接"

  Text1.SetFocus

  End Sub

学习啦在线学习网   Private Sub a_Error(ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)

  flag = False

  Timer1.Enabled = False

  Comm2.MousePointer = 0

  Form1.MousePointer = 0

学习啦在线学习网   MsgBox "网络连接失败 !"

  Label3.Caption = "等待连接"

  Combo1.Enabled = True

  Combo1.SetFocus

  a.Close

  Comm2.Caption = "连接"

  End Sub

学习啦在线学习网   Private Sub Comm1_Click()

  a.Close 注释:关闭连接

学习啦在线学习网   Form1.WindowState = 1

  End Sub

  Private Sub Comm2_Click()

  If Comm2.Caption = "断开连接" Then

  a.Close

  Comm2.Caption = "连接"

  Label3.Caption = "等待连接"

学习啦在线学习网   Combo1.Enabled = True

学习啦在线学习网   Timer1.Enabled = False

学习啦在线学习网   Comm2.MousePointer = 0

  Form1.MousePointer = 0

  Else

学习啦在线学习网   Text2.Text = ""

  Label3.Caption = "正在连接.."

学习啦在线学习网   Comm2.MousePointer = 11

学习啦在线学习网   Form1.MousePointer = 11

  Timer1.Enabled = True

  flag = False

  a.Protocol = sckTCPProtocol

学习啦在线学习网   a.RemoteHost = Combo1.Text

学习啦在线学习网   a.RemotePort = 3000

  a.Connect

  End If

  End Sub

  Private Sub Form_DblClick()

  If MsgBox("关闭本聊天室! 确认吗?", 36, "退出系统") = 6 Then

  End

  Else

学习啦在线学习网   Form1.WindowState = 1

  End If

  End Sub

  Private Sub Form_Load()

学习啦在线学习网   If App.PrevInstance Then

学习啦在线学习网   MsgBox "本系统已经加载,请看任务拦!", 48, "提示"

  End

  End If

  flag = False

  Load Form2 ‘读入form2进入监听

  End Sub

  Private Sub Send_Click()

学习啦在线学习网   Dim S As String

  On Error GoTo ffff ‘防止链路中断

  Send.MousePointer = 11

  If Right(Text1.Text, 1) <> Chr(10) Then

  S = Text1.Text + Chr(13) + Chr(10)

  Else

学习啦在线学习网   S = Text1.Text

  End If

  If flag Then

  a.SendData S

  End If

学习啦在线学习网   Exit Sub

  ffff:

  MsgBox "连接中断!", 48, "提示"

  a.Close

学习啦在线学习网   Send.MousePointer = 0

  Comm2.Caption = "连接"

  Label3.Caption = "等待连接"

  Combo1.Enabled = True

  Comm2.MousePointer = 0

学习啦在线学习网   Form1.MousePointer = 0

学习啦在线学习网   Exit Sub

  End Sub

  Private Sub Timer1_Timer()

  flag = False

  Timer1.Enabled = False

学习啦在线学习网   Comm2.MousePointer = 0

学习啦在线学习网   Form1.MousePointer = 0

  MsgBox "网络连接失败(超时) !"

学习啦在线学习网   Label3.Caption = "等待连接"

  Combo1.Enabled = True

学习啦在线学习网   Combo1.SetFocus

  a.Close

  Comm2.Caption = "连接"

  End Sub

  ⑶ 在Form2的各控件事件中加入如下代码:

学习啦在线学习网   Const maxn = 200 ‘最大同时连接本机的客户数

  Dim user(maxn) As Boolean

  Private Sub Command1_Click()

学习啦在线学习网   Form2.Hide

  End Sub

学习啦在线学习网   Private Sub Command2_Click()

  Load Form1

  Form1.Show

  End Sub

  Private Sub Form_Load()

  Dim str1 As String

  Form2.Caption = "雷萌通信软件"

  注释:winsock控件 a 作为服务器程序监听

学习啦在线学习网   a.LocalPort = 3000

  a.Listen

  End Sub

学习啦在线学习网   Private Sub a_ConnectionRequest(ByVal requestID As Long)

学习啦在线学习网   Dim i As Long

  For i = 1 To maxn ‘当一客户请求时给启动一Winsock控件标志号

学习啦在线学习网   If Not user(i) Then

  user(i) = True

学习啦在线学习网   Exit For

  End If

  Next i

  If i > maxn Then

  Exit Sub

  End If

学习啦在线学习网   Load b(i) ‘当一客户请求时启动一Winsock控件

学习啦在线学习网   b(i).Accept requestID 注释:实际建立连接

学习啦在线学习网   If Text1.Text = "" Then 注释:发送数据

  b(i).SendData Chr(0)

  Else

  b(i).SendData Text1.Text

  End If

  Form2.Show

  End Sub

  Private Sub s_Close(Index As Integer)

  b(Index).Close 注释:关闭连接

学习啦在线学习网   Unload b(Index) 注释:卸载 一个WinSock 控件

学习啦在线学习网   user(Index) = False

  End Sub

学习啦在线学习网   Private Sub b_DataArrival(Index As Integer, ByVal bytesTotal As Long)

学习啦在线学习网   Dim str As String

  Dim i As Long

  b(Index).GetData str

学习啦在线学习网   Text1.Text = Text1.Text + str

学习啦在线学习网   For i = 1 To maxn

  If user(i) Then

  b(i).SendData str

  End If

  Next i

  End Sub

  三·运行

学习啦在线学习网   本程序在VB6.0中编译通过,运行后最小化到任务栏上,也可以用API的Shell_Notifyicon 函数做入右下角的指示器栏中常驻内存。你可以在网络中用一个固定的机器地址作为聊天讨论室,其他用户都选该机地址连接进入该室聊天或讨论。各用户也可选各自熟悉的地址进行连接对话,双击form1空白处从内存中撤出系统。根据同样的原理可以制作电子邮件系统。

399597