Winsockコントロールを使用してサーバー/クライアント型のチャットソフトを作成しています。
質問なのですが、クライアントの数だけポートが必要なのでしょうか?
何の為のポート?
接続用は1つで通信用はクライアント分になるのでは?
GODさん、ご返答ありがとうございます。
通信用のポートです。クライアント分ポートが必要になるなら、たとえば接続用のポートが12345だったとしたら通信用のポートは12346,12347という風に割り当てられていくのでしょうか?
考え方は大体それでいいと思いますが、12346とするかは微妙です。
プログラム中で空きポート番号の一覧を管理するならできそうですが、大概は
面倒なのでLocalPortに0を入れて空いている適当なポートを勝手に割り当てさ
せます。
一例としてサンプル(VB6)を(考えかただけ読んでください。)
Private Sub Wsock_ConnectionRequest(Index As Integer, ByVal requestID As Long)
'Wsock - WinSockコントロール
'Index = 0 受け付け用(特定ポートを開いて待ち受ける)
'Index = 1 〜 n 通信用
Dim NewIndex As Integer
'待ち受け用以外でリクエストが来ても無視する。
If Index <> 0 Then Exit Sub
NewIndex = Wsock.UBound + 1
'通信で使用するためのWinSockコントロールをロードする
Load Wsock(NewIndex)
'空きポートを適当に割り当てる
Wsock(NewIndex).LocalPort = 0
'ロードしたコントロールでaccept処理
Wsock(NewIndex).Accept requestID
End Sub
そうだったんですか!
今まではなんとなく動いているという感じでLocalPort = 0の意味がよくわかっていませんでした。
がんばって作ってみます。ありがとうございました。