多个客户端向一台服务器发送数据,服务器知道客户端的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

解决方案 »

  1.   

    用ini文件记录服务器ip.是不是这个意思
      

  2.   

    给你点参考:
    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
      

  3.   

    我才看明白点,局域网的话采用udp协议就是先启动谁都无所谓