ついで
2月の頭ごろに公開デバッグしたTelexクラスにはさらに深刻なバグがあった氏にたい|||。n_
↓Receive()の中をこんなかんじみたくしてnb==0になるのを避けないと、待ってる間回り続けてCPU時間を消費するという、、orz
// 読み出す DWORD nbMax = bufSz - wp; // LineSizeMax以上は保証される if (nb > nbMax) nb = nbMax; else if (nb == 0) nb = 1; socket.SetTimeout(uTimeout); int n = socket.Receive(buf + wp, nb); socket.KillTimeout(); if (n == SOCKET_ERROR) { bTimeout = (socket.GetLastError() == WSAEINTR); if (bTimeout) { ERRC(ETMO, "受信タイムアウト"); } else { ERR("Receive()失敗"); socket.Close(); } return false; } else if (n == 0) { if (!socket.IOCtl(FIONREAD, &nb)) { ERR("Socket切断"); buf[wp] = '\0'; return false; /*= ここに来たときrp == wpのままなので、 * 空文字列を返すしかない。 */ } } wp += n;