TCP接続の複数人チャットプログラムをつくるには?

解決


素人志向  2004-01-08 16:10:19  No: 111147  IP: [192.*.*.*]

一対一のサーバー、クライアントの送受信はできるのですが、クライアントを2つ以上にしてサーバー側で2 つ以上の接続要求の受け付けるようにするにはどのようにすればいいのでしょうか?

編集 削除
ねろ  2004-01-09 07:46:14  No: 111148  IP: [192.*.*.*]

WinSockを使用するのなら、WinSockを配列にしておいて
新しい接続要求が来たら、新しいWinSockを作って、
データーを受け取る、切断が発生したら使用していた
WinSockを未使用にして、次に接続要求が来たら空いている
WinSockを割り当て、空いていなかったら新しいWinSock
を作って接続を受け付ける。こんな感じで出来ます。

編集 削除
batchman  2004-01-09 08:47:51  No: 111149  IP: [192.*.*.*]

MSDNヘルプで、
「Winsock (Winsock) コントロールの使い方」で検索をかければ、
2つ以上の接続要求の受け付け方法が簡単に解説されています。

編集 削除
素人志向  2004-01-09 09:43:46  No: 111150  IP: [192.*.*.*]

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

どうしたらいいのでしょうか?

編集 削除
素人志向  2004-01-09 09:59:32  No: 111151  IP: [192.*.*.*]

解決しましたありがとうございました。

編集 削除
ラムだっちゃ  2004-01-09 10:04:39  No: 111152  IP: [192.*.*.*]

同一のIPで使えるアプリケーションポート番号って1つだけしか使えない
ので、接続ごとに未使用のポート番号を使うようにすれば問題ないと思います。

編集 削除
素人志向(追加)  2004-01-09 11:22:16  No: 111153  IP: [192.*.*.*]

MSDNヘルプのWinsock (Winsock) コントロールの使い方を参考にしているんですがサーバー側とクライアント側の接続がうまくいきません。
クライアント側のソースもどこか変える必要がありますか?

編集 削除
ラムだっちゃ  2004-01-10 00:21:07  No: 111154  IP: [192.*.*.*]

サーバー側で待機しているポート番号をクライアント側で指定してください。
S:1001,1002,1003,1004,1005
C1:1001へ接続
C2:1001が使用中なので1002へ接続
C3:1001,1002が使用中なので1003へ接続
みたいな感じで。

編集 削除
ラムだっちゃ  2004-01-10 00:47:53  No: 111155  IP: [192.*.*.*]

MSDNを見たらポート番号は変えなくてもよさそうですね。
勘違いしていました。
あと、ここは解決しているので、↓みてみます。
TCP接続の2 つ以上の接続要求の受け付けをするには?

編集 削除