60分求一个简单而完整的VB聊天程序
要求,用到VB的WINSCOCK,用TCP协议,A、B、C三台电脑,B和C通信,A是服务器。
B和C都是客户端,B(或C)通过A连接到C(或B)进行通信。
A:服务器端
--------------------------------------------------------------------------
Private ServerIndex As Long '表示有ServerIndex个winsock控件被载入
Private Sub closeCon_Click()
If serverWinsock(ServerIndex).State <> sckClosed Then
serverWinsock(ServerIndex).Close
End If
End Sub
Private Sub Form_Load()
'send.Enabled = False
ServerIndex = 0
'serverWinsock(0).Protocol = sckTCPProtocol
serverWinsock(0).LocalPort = 6000
serverWinsock(0).Listen
clientfrm1.Show
clientfrm2.Show
End Sub
Private Sub send_Click()
serverWinsock(ServerIndex).SendData sendmsg.Text
'MsgBox sendmsg.Text
End Sub
Private Sub serverWinsock_ConnectionRequest(Index As Integer, ByVal requestID As Long)
'If serverWinsock.State <> sckClosed Then
'serverWinsock.Close
'serverWinsock.Accept requestID
'End If
Dim sip As String
sip = serverWinsock(0).RemoteHostIP '获得登录者的IP地址
If Index = 0 Then
ServerIndex = ServerIndex + 1
Load serverWinsock(ServerIndex)
'serverWinsock(ServerIndex).LocalPort = 0
serverWinsock(ServerIndex).Accept requestID
Else
'serverWinsock(ServerIndex).LocalPort = 0
serverWinsock(ServerIndex).Accept requestID
End If
MsgBox sip
End Sub
Private Sub serverWinsock_DataArrival(Index As Integer, ByVal bytesTotal As Long)
Dim strData As String
serverWinsock(ServerIndex).GetData strData
'MsgBox strData
msgoutput.Text = strData
End Sub
-------------------------------------------------------------------------------------
B或C:
--------------------------------------------------------------------------------
Private Sub connect_Click()
client1.connect
' MsgBox client1.State
If client1.State = 6 Then
connect.Enabled = False
send.Enabled = True
End If
End Sub
Private Sub Form_Load()
client1.RemoteHost = "192.168.34.71"
client1.RemotePort = 6000
send.Enabled = False
End Sub
Private Sub send_Click()
'MsgBox client1.State
On Error GoTo ErrorPro
If client1.State <> 8 Then
client1.SendData LocalIP & sendmsg.Text
MsgBox LocalIP
Exit Sub
End If
ErrorPro:
MsgBox "服务器断开连接或网络出错,请重新连接。"
End Sub
---------------------------------------------------------------------------------------
在线等,请帮忙修改和调试,给出可实现的代码就给分,谢谢各位。