回答編集履歴

1

追記

2017/08/18 03:03

投稿

toki_td
toki_td

スコア2850

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