基于VB Winsock 控件的聊天程序

前端之家收集整理的这篇文章主要介绍了基于VB Winsock 控件的聊天程序前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

今天充分利用网络资源,实现了局域网内的聊天程序.其实就是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

原文链接:https://www.f2er.com/vb/259150.html

猜你在找的VB相关文章