public void MonitorSocketStart(object source, System.Timers.ElapsedEventArgs e) { //轮巡SOCKET管理类,查数据接收超时 AsyncSocketUserToken[] ListSoc = null; m_asyncSocketServer.AsyncSocketUserTokenList.CopyList(ref ListSoc); for (int i = 0; i < ListSoc.Length; i++) { try { //SOCKET不为空,则可以发送消息 if (ListSoc[i].ConnectSocket != null) { // Console.WriteLine("{0} is time out!!!", ListSoc[i].ConnectSocket.ToString()); // //todo 服务器主动断掉这个链接,其他操作待添加 if (ListSoc[i].AsyncSocketInvokeElement != null) { ///当前端口发送不冲突 //byte[] bufferUTF8 = str2HexByte(ListSoc[i].StrQueryCommand); byte[] bufferUTF8 = str2HexByte("01030000F1D8"); AsyncSendBufferManager asyncSendBufferManager = ListSoc[i].SendBuffer; asyncSendBufferManager.StartPacket(); // asyncSendBufferManager.DynamicBufferManager.WriteInt(totalLength, false); //写入总大小 asyncSendBufferManager.DynamicBufferManager.WriteBuffer(bufferUTF8, 0, bufferUTF8.Length); asyncSendBufferManager.EndPacket(); // bool result = true; // Console.WriteLine("ListSoc[i].SendAsyncState = ?" + ListSoc[i].SendAsyncState); //如果发送端口被占有 while (ListSoc[i].SendAsyncState) { Thread.Sleep(100); Console.WriteLine("sleep 100"); } int packetOffset = 0; int packetCount = 0; if (asyncSendBufferManager.GetFirstPacket(ref packetOffset, ref packetCount)) { ListSoc[i].SendAsyncState = true; // Console.WriteLine(System.DateTime.Now + "ListSoc[i].SendAsyncState = true;"); Program.Logger.Debug(System.DateTime.Now + "send:" + bufferUTF8); result = m_asyncSocketServer.SendAsyncEvent(ListSoc[i].ConnectSocket, ListSoc[i].SendEventArgs, asyncSendBufferManager.DynamicBufferManager.Buffer, packetOffset, packetCount); } } } Thread.Sleep(100); } catch (Exception ex) { Console.WriteLine("##############" + ex); } } }