/// <summary> /// Game Connection Packet List Manager. /// </summary> protected void GameListener(object args) { if (State == ConnectionState.Connected && StreamGame != null && StreamLocal != null) { try { if (StreamGame != null && StreamGame.CanRead && StreamGame.DataAvailable) { //Byte to Store Server Packets. var data = new Byte[8192]; //Get Game Server Packets. var length = StreamGame.Read(data, 0, data.Length); if (length > 0) { //Send Packet to Client if Needed. if (StreamLocal.CanWrite) { StreamLocal.Write(data, 0, length); } //Stack the Intercepted Packet. PacketChangedCall.BeginInvoke(data.Redim(length), PacketSource.Server, null, PacketChangedCall); //Initialize the Client Listener, if Needed. if (TMClientListener != null) { return; } TMClientListener = new System.Threading.Timer(ClientListener, null, 0, 100); } } } catch (IOException) { Disconnect(); } } }
/// <summary> /// Client Connection Packet List Manager. /// </summary> protected void ClientListener(object args) { try { if (StreamLocal != null && StreamLocal.CanRead && StreamLocal.DataAvailable) { //Byte to Store Client Packets. var data = new Byte[8192]; //Get Client Local Packets. var length = StreamLocal.Read(data, 0, data.Length); if (length > 0) { //Send Packet to Server if Needed. if (StreamGame.CanWrite) { StreamGame.Write(data, 0, length); } //Stack the Intercepted Packet. PacketChangedCall.BeginInvoke(data.Redim(length), PacketSource.Client, null, PacketChangedCall); } } } catch (IOException) { Disconnect(); } }