设计 任务书 文档 开题 答辩 说明书 格式 模板 外文 翻译 范文 资料 作品 文献 课程 实习 指导 调研 下载 网络教育 计算机 网站 网页 小程序 商城 购物 订餐 电影 安卓 Android Html Html5 SSM SSH Python 爬虫 大数据 管理系统 图书 校园网 考试 选题 网络安全 推荐系统 机械 模具 夹具 自动化 数控 车床 汽车 故障 诊断 电机 建模 机械手 去壳机 千斤顶 变速器 减速器 图纸 电气 变电站 电子 Stm32 单片机 物联网 监控 密码锁 Plc 组态 控制 智能 Matlab 土木 建筑 结构 框架 教学楼 住宅楼 造价 施工 办公楼 给水 排水 桥梁 刚构桥 水利 重力坝 水库 采矿 环境 化工 固废 工厂 视觉传达 室内设计 产品设计 电子商务 物流 盈利 案例 分析 评估 报告 营销 报销 会计
 首 页 机械毕业设计 电子电气毕业设计 计算机毕业设计 土木工程毕业设计 视觉传达毕业设计 理工论文 文科论文 毕设资料 帮助中心 设计流程 
垫片
您现在所在的位置:首页 >>理工论文 >> 文章内容
                 
垫片
   我们提供全套毕业设计和毕业论文服务,联系微信号:biyezuopin QQ:2922748026   
用VB实现聊天讨论室和点对点会话
文章来源:www.biyezuopin.vip   发布者:毕业作品网站  

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

一·Winsock的主要属性、事件和方法 http://www.16sheji8.cn/

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中装入控件: http://www.16sheji8.cn/

控件名
主要属性
用 途

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=”连接”
请求与输入的地址连接 http://www.16sheji8.cn/

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 http://www.16sheji8.cn/
模拟客户机表单

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 http://www.16sheji8.cn/

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 = sckTCPProtocolhttp://www.16sheji8.cn/

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 Shttp://www.16sheji8.cn/

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

http://www.16sheji8.cn/

Private Sub Command2_Click()

Load Form1

Form1.Show

End Sub

 

Private Sub Form_Load()http://www.16sheji8.cn/

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

http://www.16sheji8.cn/

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 Subhttp://www.16sheji8.cn/

三·运行

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

  全套毕业设计论文现成成品资料请咨询微信号:biyezuopin QQ:2922748026     返回首页 如转载请注明来源于www.biyezuopin.vip  

                 

打印本页 | 关闭窗口
本类最新文章
储油罐的变位识别与罐容表标定 DVD租赁优化方案 车灯线光源的优化设计方案
基于时频分析与自适应滤波技术的多 基于WxJava框架的集客微信公 CRM系统的设计开发与Open
| 关于我们 | 友情链接 | 毕业设计招聘 |

Email:biyeshejiba@163.com 微信号:biyezuopin QQ:2922748026  
本站毕业设计毕业论文资料均属原创者所有,仅供学习交流之用,请勿转载并做其他非法用途.如有侵犯您的版权有损您的利益,请联系我们会立即改正或删除有关内容!