2011-01-19 8 views
2

私はVB6で作成されたこの非常に単純なチャットアプリをwinsockで作成していますが、1つの接続しか受け付けていないことがわかります。ありがとう!VB6でwinsockで作成されたソケットサーバー上の複数のクライアントを処理する方法は?

Private Sub Winsock1_Close() 
    ' Finaliza la conexión 
    Winsock1.Close 

    txtLog = txtLog & "*** Desconectado" & vbCrLf 

End Sub 

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) 

    If Winsock1.State <> sckClosed Then 
     Winsock1.Close ' close 
    End If 

    Winsock1.Accept requestID 

    txtLog = "Cliente conectado. IP : " & _ 
       Winsock1.RemoteHostIP & vbCrLf 

End Sub 

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long) 
Dim dat As String 

    Winsock1.GetData dat, vbString 
    txtLog = txtLog & "Cliente : " & dat & vbCrLf 

End Sub 

答えて

2

解決策は、Winsockオブジェクトの配列を持ち、実行時に新しいものを作成することです。作成した新しいオブジェクトは接続要求を受け入れます。

ので、あなたの接続要求サブに、あなたは新しいソケットを持っているでしょう:

Dim ConnectionCount as long 

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long) 
    ConnectionCount=ConnectionCount+1 

    Load Winsocks(ConnectionCount) 
    Winsocks(ConnectionCount).Accept(requestID) 

    txtLog = "Cliente conectado. IP : " & _ 
      Winsocks(ConnectionCount).RemoteHostIP & vbCrLf 

End Sub 

編集:ここに私のコードよりもあなたがよりよい助けるかもしれないチュートリアルです:http://www.devx.com/tips/Tip/5488

それは次の同じ考え。

+0

ありがとう@ブラッドしかし、私はどのようにwinsockの配列を作成できますか? – DomingoSL

+0

フォームにWinsockコントロールを作成し、そのインデックスを0に設定します。これにより、コントロール配列の一部になります。 – Brad

関連する問題