0

私は単純な winsock サーバー チャットをしています。これがコードです。

Private Sub Form_Load()
Winsock1.LocalPort = 5100
Winsock1.Listen
End Sub

Private Sub Winsock1_ConnectionRequest(ByVal requestID As Long)
Winsock1.Close
Winsock1.Accept requestID
End Sub

Private Sub Winsock1_DataArrival(ByVal bytesTotal As Long)
Dim sData As String
Winsock1.GetData sData
Text1.Text = Text1.Text & sData
End Sub

iOS アプリからメッセージを受信しましたが、「sendData」でメッセージを送信できません。

すべてのクライアントにメッセージを送信するにはどうすればよいですか? クライアントを使用する必要がありますか?

ありがとう。

4

1 に答える 1

1

複数のクライアントにメッセージを送信する場合、最善の方法は、リッスンしている winsock1 を閉じて、それを使用して要求を受け入れるのではなく、要求を受け入れる新しい winsock コントロールを作成することです。このようにして、複数のソースからの接続を受け入れることができます。

例:

最初に、winsock1 のプロパティ Index を 0 に変更して、コントロール配列を作成します。現在、すべてのイベントの署名が変更され、Index パラメーターが含まれるようになりました。

Dim NumSockets As Integer

Private Sub Form_Load()
    Winsock1(0).LocalPort = 5100
    Winsock1(0).Listen
End Sub

Private Sub Winsock1_Close(Index As Integer)
    Winsock1(Index).Close
End Sub

Private Sub Winsock1_ConnectionRequest(Index As Integer, ByVal requestID As Long)
    NumSockets = NumSockets + 1
    Load Winsock1(NumSockets)                'create a new winsock control
    Winsock1(NumSockets).Accept requestID    'use that one to accept the request
End Sub

Private Sub Winsock1_DataArrival(Index As Integer, ByVal bytesTotal As Long)
    Dim vtData As String
    Winsock1(Index).GetData vtData, vbString
    Print vtData
End Sub
于 2013-06-18T14:19:19.323 に答える