多个客户端向一台服务器发送数据,服务器知道客户端的Ip,客户端不知道,也不能在程序中固定
怎样实现?
用winsock通讯中,启动服务器端,然后再启动客户端才行这样的要求?
能不能做到先启动那个都无所谓?在服务器端舰艇的状态下
取消Check1,再次选择Check1,怎么总是连接不上服务器?
我的代码
客户端:
Private Sub Check1_Click()
If Check1.Value Then
If Text1.Text = "" Then Exit Sub
wskClient.RemoteHost = "192.168.0.55"
wskClient.RemotePort = "2222"
wskClient.Protocol = sckTCPProtocol
wskClient.Connect
List1.Clear
List1.AddItem "连接到 : " & Text1.Text & ":" & Text2.Text
Else
wskClient.Close
Timer1.Enabled = False
List1.Clear
List1.AddItem "连接已关闭..."
End If
End Sub
timer 的时间是3秒
Private Sub Timer1_Timer()
Call Check1_Click
Timer1.Enabled = False
End Sub
怎样实现?
用winsock通讯中,启动服务器端,然后再启动客户端才行这样的要求?
能不能做到先启动那个都无所谓?在服务器端舰艇的状态下
取消Check1,再次选择Check1,怎么总是连接不上服务器?
我的代码
客户端:
Private Sub Check1_Click()
If Check1.Value Then
If Text1.Text = "" Then Exit Sub
wskClient.RemoteHost = "192.168.0.55"
wskClient.RemotePort = "2222"
wskClient.Protocol = sckTCPProtocol
wskClient.Connect
List1.Clear
List1.AddItem "连接到 : " & Text1.Text & ":" & Text2.Text
Else
wskClient.Close
Timer1.Enabled = False
List1.Clear
List1.AddItem "连接已关闭..."
End If
End Sub
timer 的时间是3秒
Private Sub Timer1_Timer()
Call Check1_Click
Timer1.Enabled = False
End Sub
Option ExplicitPrivate Const cstPortID As Integer = 9000Private Sub Form_Load()
Winsock1.LocalPort = cstPortID
Winsock1.Listen
Label1.Caption = GetState(Winsock1.State)
End SubPrivate Sub Winsock1_Close()
Label1.Caption = "Step 1:" & GetState(Winsock1.State)
Refresh
Winsock1.Close
Label1.Caption = "Step 2:" & GetState(Winsock1.State)
Refresh
Winsock1.LocalPort = cstPortID
Winsock1.Listen
Label1.Caption = "Step 3:" & GetState(Winsock1.State)
End SubPrivate Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
If Winsock1.State <> sckClosed Then Winsock1.Close
Winsock1.Accept requestID
Label1.Caption = GetState(Winsock1.State)
End SubPrivate Function GetState(ByVal StateID As Integer) As String
Select Case StateID
Case sckClosed
GetState = "0->缺省的。关闭"
Case sckOpen
GetState = "1->打开"
Case sckListening
GetState = "2->侦听"
Case sckConnectionPending
GetState = "3->连接挂起"
Case sckResolvingHost
GetState = "4->识别主机"
Case sckHostResolved
GetState = "5->已识别主机"
Case sckConnecting
GetState = "6->正在连接"
Case sckConnected
GetState = "7->已连接"
Case sckClosing
GetState = "8->同级人员正在关闭连接"
Case sckError
GetState = "9->错误"
End Select
End FunctionPrivate Sub Winsock1_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)
Winsock1.Close
Winsock1.LocalPort = cstPortID
Winsock1.Listen
Label1.Caption = GetState(Winsock1.State)
End Sub