一対一のサーバー、クライアントの送受信はできるのですが、クライアントを2つ以上にしてサーバー側で2 つ以上の接続要求の受け付けるようにするにはどのようにすればいいのでしょうか?
WinSockを使用するのなら、WinSockを配列にしておいて
新しい接続要求が来たら、新しいWinSockを作って、
データーを受け取る、切断が発生したら使用していた
WinSockを未使用にして、次に接続要求が来たら空いている
WinSockを割り当て、空いていなかったら新しいWinSock
を作って接続を受け付ける。こんな感じで出来ます。
MSDNヘルプで、
「Winsock (Winsock) コントロールの使い方」で検索をかければ、
2つ以上の接続要求の受け付け方法が簡単に解説されています。
Private intMax As Long
Private Sub Form_Load()
intMax = 0
sckserver(intMax).LocalPort = 1001 ←この部分でエラー、オブジェクトは、このプロパティまたはメソッドをサポートしていません。(Error 438)
sckserver(intMax).Listen
End Sub
Private Sub sckServer_ConnectionRequest(Index As Integer, ByVal requestID As Long)
If Index = 0 Then
intMax = intMax + 1
Load sckserver(intMax)
sckserver(intMax).LocalPort = 0
sckserver(intMax).Accept requestID
Load txtData(intMax)
End If
End Sub
どうしたらいいのでしょうか?
解決しましたありがとうございました。
同一のIPで使えるアプリケーションポート番号って1つだけしか使えない
ので、接続ごとに未使用のポート番号を使うようにすれば問題ないと思います。
MSDNヘルプのWinsock (Winsock) コントロールの使い方を参考にしているんですがサーバー側とクライアント側の接続がうまくいきません。
クライアント側のソースもどこか変える必要がありますか?
サーバー側で待機しているポート番号をクライアント側で指定してください。
S:1001,1002,1003,1004,1005
C1:1001へ接続
C2:1001が使用中なので1002へ接続
C3:1001,1002が使用中なので1003へ接続
みたいな感じで。
MSDNを見たらポート番号は変えなくてもよさそうですね。
勘違いしていました。
あと、ここは解決しているので、↓みてみます。
TCP接続の2 つ以上の接続要求の受け付けをするには?
ツイート | ![]() |