/// <summary> /// 服务器端不停的接收客户端发来的消息 /// </summary> /// <param name="o"></param> void Received(object o) { ServerDeal serverDeal = o as ServerDeal; Socket curSocket = serverDeal.socket; //设置接受时间的超时时间(客户端会定时发心跳包) //curSocket.ReceiveTimeout = Constants.HEART_BEAT_TIME; try { while (true) { //客户端连接服务器成功后,服务器接收客户端发送的消息 byte[] buffer = new byte[1024 * 1024 * 3]; //实际接收到的有效字节数 if (IsSocketConnected(curSocket, serverDeal)) { int len = curSocket.Receive(buffer); //如果当前已断开 if (len <= 0 || !IsSocketConnected(curSocket, serverDeal)) { clientBreakUp(serverDeal, curSocket); break; } //获取服务器传来的消息 serverDeal.msg = Encoding.UTF8.GetString(buffer, 0, len); //屏幕上显示(测试) ShowMsg(curSocket.RemoteEndPoint + ": receive " + serverDeal.msg); //服务器处理该进程 serverDeal.processUpdate(); } else { clientBreakUp(serverDeal, curSocket); break; } } } catch (Exception ee) { ShowMsg(ee.ToString()); clientBreakUp(serverDeal, curSocket); } }