public override Packet processPacket(Packet packet, OakNetEndPoint endpoint) { McDataServerClientPacket mdscp = packet as McDataServerClientPacket; DummyServer.sendData(mdscp.data); return(null); }
public override Packet processPacket(Packet packet, OakNetEndPoint endpoint) { MessagePacket mpacket = packet as MessagePacket; Console.WriteLine(mpacket.name + ": " + mpacket.msg); return(null); }
public override Packet processPacket(Packet packet, OakNetEndPoint endpoint) { McDataClientServerPacket mdcs = packet as McDataClientServerPacket; if (DummyClient.isHost) { DummyClient.getDummyClient(endpoint).sendData(mdcs.data); } return(null); }
public static DummyClient getDummyClient(OakNetEndPoint ep) { lock (dict) { if (!dict.ContainsKey(ep)) { dict.Add(ep, new DummyClient(ep)); } } return(dict[ep]); }
public override Packet processPacket(Packet packet, OakNetEndPoint endpoint) { if (DummyClient.isHost) { if (DummyClient.getDummyClient(endpoint).socket == null) { return(null); } try { DummyClient.getDummyClient(endpoint).socket.Shutdown(System.Net.Sockets.SocketShutdown.Both); DummyClient.getDummyClient(endpoint).socket.Close(); } catch (SocketException) { } DummyClient.getDummyClient(endpoint).socket = null; } return(null); }
public DummyClient(OakNetEndPoint receiver) { this.receiver = receiver; // Establish the remote endpoint for the socket. IPAddress ipAddress = IPAddress.Loopback; IPEndPoint remoteEP = new IPEndPoint(ipAddress, 25565); // Create a TCP/IP socket. Socket sender = new Socket(ipAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); // Connect the socket to the remote endpoint. Catch any errors. try { sender.Connect(remoteEP); socket = sender; var buffer = new byte[500]; Task.Factory.StartNew(() => { bool connected = true; while (connected) { while (connected && socket != null) { try { if (sender.Poll(1000, SelectMode.SelectRead)) { if (sender.Available == 0) { connected = false; } break; } else { Thread.Sleep(1); } } catch (Exception) { connected = false; break; } } if (!connected) { break; } try { while (sender.Available > 0) { if (sender.Available > 500) { buffer = new byte[500]; } else { buffer = new byte[sender.Available]; } var bytesRead = sender.Receive(buffer); ONL.Sessions.SendBroadcast(new McDataServerClientPacket() { data = buffer }, true); } } catch (ObjectDisposedException) { connected = false; break; } } socket = null; // Release the socket. try { sender.Shutdown(SocketShutdown.Both); sender.Close(); } catch (Exception) { } lock (dict) { dict.Remove(receiver); } }); } catch (ArgumentNullException ane) { Console.WriteLine("ArgumentNullException : {0}", ane.ToString()); } catch (SocketException se) { Console.WriteLine("SocketException : {0}", se.ToString()); } catch (Exception e) { Console.WriteLine("Unexpected exception : {0}", e.ToString()); } }