回答編集履歴
1
訂正
answer
CHANGED
@@ -12,14 +12,14 @@
|
|
12
12
|
LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
|
13
13
|
{
|
14
14
|
...
|
15
|
-
static SOCKET socServer[10];
|
15
|
+
static SOCKET socServer[10];//WM_DESTROYメッセージ受信(自アプリ終了)時に、閉じられていない通信ソケットを閉じるため(これをしないと、通信相手が困る)に、通信ソケットハンドルをここに記憶。
|
16
16
|
...
|
17
17
|
switch (uMsg) {
|
18
18
|
case WM_CREATE:
|
19
19
|
//配列socServerを初期化(ぜんぶの要素をINVALID_SOCKETにする)
|
20
20
|
|
21
21
|
case FD_ACCEPT:
|
22
|
-
//
|
22
|
+
//acceptで通信用ソケットハンドルを得る。socServer配列のまだ割り当てていない配列要素(INVALID_SOCKETの要素)へ格納。
|
23
23
|
|
24
24
|
case FD_READ:
|
25
25
|
//メッセージのwParamに通信用ソケットハンドルが入っており、これを使って受信し、他の任意の処理をする。クローズしたときには、socServer配列からも削除。
|
@@ -28,7 +28,8 @@
|
|
28
28
|
//メッセージのwParamに通信用ソケットハンドルが入っており、これを使ってクローズする。socServer配列からも削除。
|
29
29
|
|
30
30
|
case WM_DESTROY:
|
31
|
-
//まだ閉じていない通信用のソケット
|
31
|
+
//socServer配列の中身を調べ、まだ閉じていない通信用のソケットをクローズ。
|
32
32
|
}
|
33
33
|
```
|
34
|
-
のような感じです。
|
34
|
+
のような感じです。
|
35
|
+
サンプルコードでは、nMaxSocketCount を超えて接続が来たときに、うまくいかなくなってしまいますが...
|