加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

基于VB Winsock 控件的聊天程序

发布时间:2020-12-17 08:18:57 所属栏目:百科 来源:网络整理
导读:今天充分利用网络资源,实现了局域网内的聊天程序.其实就是VB中的一个小控件-Winsock控件,Winsock使用了TCP协议和UDP协议,让本地计算机连接到远程的计算机上,在连接结束之前实时地进行数据交换.使用TCP协议时,需要创建一个客户端应用程序,就必须识别服务器的

今天充分利用网络资源,实现了局域网内的聊天程序.其实就是VB中的一个小控件-Winsock控件,Winsock使用了TCP协议和UDP协议,让本地计算机连接到远程的计算机上,在连接结束之前实时地进行数据交换.使用TCP协议时,需要创建一个客户端应用程序,就必须识别服务器的名称或IP地址.应用程序的通信端口随时都将仔细监测对方发出的消息,这是系统进行可靠的连接保证.一旦连接发生,任何一方都可以通过senddata发送和接收数据,并借助getdata把自己的数据分离出来。

这里我们需要创建两个应用程序,服务器应用程序和客户端应用程序.服务器首先创建一个服务端口号(最好大于2000),并且服务器的应用程序处于工作状态,确保进入监听状态,客户端的应用程序才能开始建立连接,进入正常的通信状态。
下面的程序主要实现了实时聊天的功能:
1.下图为制作的服务端和客户端的界面。

2.此为运行后连接成功的界面。

3.实现聊天功能,成功聊天。

如下为代码:

服务端:

Private Sub Command1_Click()
'发送
Winsock1.SendData Text1.Text
Text2.Text = Text2.Text + Chr(13) + Chr(10) + CStr(Date) + Chr(32) + CStr(Time$()) + Chr(13) + Chr(10) + "我:" & Text1.Text
Text1.Text = ""

End Sub

Private Sub Form_Load()
'端口设置
Winsock1.LocalPort = 2008
Winsock1.Listen
Label1.Caption = Label1.Caption + CStr(Winsock1.LocalIP)
Label2.Caption = Label2.Caption + CStr(Winsock1.LocalPort)
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer,Shift As Integer)
'按enter键发送数据
If KeyCode = 13 Then
Text2.Text = Text2.Text + Chr(13) + Chr(10) + CStr(Date) + Chr(32) + CStr(Time$()) + Chr(10) + "我:" & Text1.Text
Winsock1.SendData Text1.Text
Text1.Text = ""
End If
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
'连接
If Winsock1.State <> sckClosed Then
Winsock1.Close
Winsock1.Accept (requestID)
End If
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)

'接受
Beep
Dim strdata As String
Winsock1.GetData strdata
Text2.Text = Text2.Text + Chr(13) + Chr(10) + CStr(Data) + Chr(32) + CStr(Time$()) + Chr(13) + Chr(10) + Text3.Text & ":" & strdata

End Sub

客户端:

Private Sub Command1_Click()
'连接
Winsock1.RemoteHost = Text3.Text
Winsock1.RemotePort = Val(Text4.Text)
If Winsock1.State = sckClosed Then
Winsock1.Connect
Label4.Caption = "成功连接"
End If
End Sub

Private Sub Command2_Click()
'发送
Winsock1.SendData Text1.Text
Text2.Text = Text2.Text + Chr(13) + Chr(10) + CStr(Date) + Chr(32) + CStr(Time$()) + Chr(13) + Chr(10) + "我:" & Text1.Text
Text1.Text = ""

End Sub

Private Sub Command3_Click()
'退出
End
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer,Shift As Integer)
'按enter键发送数据
If KeyCode = 13 Then
Text2.Text = Text2.Text + Chr(13) + Chr(10) + CStr(Data) + Chr(32) + CStr(Time$()) + Chr(13) + Chr(10) + "我:" & Text1.Text
Winsock1.SendData Text1.Text
Text1.Text = ""
End If
End Sub


Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) '接收 Beep Dim strdata As String Winsock1.GetData strdata Text2.Text = Text2.Text + Chr(13) + Chr(10) + Text5.Text & ":" & strdata End Sub

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读