回答編集履歴

1

追記

2017/08/18 03:03

投稿

toki_td
toki_td

スコア2850

test CHANGED
@@ -1,3 +1,19 @@
1
1
  接続が切れた時にuser_lenがそのままになっているから無効なソケットをFD_SETしてるんでエラーになってるんじゃないかな?
2
2
 
3
3
  dstSocketの何番目がいつ切れるかわからないからuser_lenで数を記憶するよりも配列を全部-1とか無効な値に初期化しておいて、接続が切れたらそれに戻してFD_SETをしないようにしないといけないと思います。
4
+
5
+
6
+
7
+ [追記]
8
+
9
+ わかった、別件でバグってますね。
10
+
11
+ ()が漏れてるんでasockが常に1になってると思います。
12
+
13
+
14
+
15
+ if (**(**asock = accept(srcSocket, (struct sockaddr *)&caddr, &caddr_len)**)** < 0) {
16
+
17
+
18
+
19
+ こうです。