public IEnumerator Recv(CothreadSocketRecvData recvData) { if (!Connected) { yield break; } recvData.Clear(); var hub = CothreadHub.Instance; var rs = sock.BeginReceive(recvData.Data, 0, recvData.Data.Length, SocketFlags.None, hub.cb, hub.current); if (!rs.IsCompleted) { yield return(rs); } if (hub.CurrentCothread.IsTimeout(false)) { Close(); } else { try { recvData.Length = sock.EndReceive(rs); } catch (SocketException) { Close(); } } }