teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

訂正

2015/11/13 02:45

投稿

hsk
hsk

スコア728

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]; // staticで変数宣言されているので各要素の初期値は0?(INVALID_SOCKET)
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
- //WM_DESTROYメッセージ(アプリ終了)受時に接続中のソケットを閉じために(これをしないと、通信相手が困る)socServer配列のまだ割り当てていない配列要素(INVALID_SOCKETの要素)へ格納。
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
- //まだ閉じていない通信用のソケット(socServer配列)をクローズ。
31
+ //socServer配列の中身を調べ、まだ閉じていない通信用のソケットをクローズ。
32
32
  }
33
33
  ```
34
- のような感じです。
34
+ のような感じです。
35
+ サンプルコードでは、nMaxSocketCount を超えて接続が来たときに、うまくいかなくなってしまいますが...