今天充分利用网络资源,实现了局域网内的聊天程序.其实就是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 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|