static private void _OnRecieveData(IAsyncResult ar) { try { run = false; if (serverSocket == null || serverSocket.Connected == false) { return; } int count = serverSocket.EndReceive(ar); if (count == 0) { serverSocket.Close(); return; } messageHelper.AddCount(count); NetCmdHandle.Dispatch(messageHelper, serverSocket); serverSocket.BeginReceive(messageHelper.Buffer, messageHelper.GetStartIndex, messageHelper.GetRemainBytes, SocketFlags.None, _OnRecieveData, null); run = true; } catch (Exception e) { Console.WriteLine(e); } }
static void Main(string[] args) { serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); serverSocket.Connect(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 52077)); NetCmdHandle.Init(); serverSocket.BeginReceive(messageHelper.Buffer, messageHelper.GetStartIndex, messageHelper.GetRemainBytes, SocketFlags.None, _OnRecieveData, null); _StartHeartBeats(); string s; while ((s = Console.ReadLine()) != string.Empty && run) { byte[] data = MessageHelper.SerializeToBinary(new ST_BROADCAST(string.Empty, s)); serverSocket.Send(MessageHelper.PackData(NetCmd.BROADCAST, data)); } Console.ReadKey(); serverSocket.Close(); }