/** * */ public void Start() { Thread serverThread = new Thread(ServerThreadProc); serverData = new ServerThreadData(); Debug.Log("[ServerManager] Starting server thread..."); serverThread.Start(serverData); }
public void Init() { if (!running) { running = true; threads = new List<ServerThreadData>(); TCPChannelManager cm = (TCPChannelManager)gateway.GetChannelManager("Ethernet:TCP"); foreach (var device in cm.ListNetworkDevices()) { ServerThreadData std = new ServerThreadData(this, device); threads.Add(std); } } }
public void Init() { if (!running) { running = true; threads = new List <ServerThreadData>(); TCPChannelManager cm = (TCPChannelManager)gateway.GetChannelManager("Ethernet:TCP"); foreach (var device in cm.ListNetworkDevices()) { ServerThreadData std = new ServerThreadData(this, device); threads.Add(std); } } }
/** * */ public static void ServerThreadProc(object o) { Debug.Log("[ServerThread] Server thread started..."); ServerThreadData serverData = (ServerThreadData)o; TcpListener listener = new TcpListener(IPAddress.Loopback, 55000); listener.Start(); while (!serverData.exitRequested) { if (listener.Pending()) { TcpClient client = listener.AcceptTcpClient(); ClientData clientData = new ClientData(); clientData.client = client; lock (serverData.clients) { serverData.clients.Add(clientData); } Thread clientThread = new Thread(ClientThreadProc); clientThread.Start(clientData); } else { Thread.Yield(); } } listener.Stop(); lock (serverData.clients) { foreach (ClientData clientData in serverData.clients) { clientData.exitRequested = true; } } Debug.Log("[ServerThread] Server thread ended..."); }