using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Net.Sockets; using System.Net; using System.Net.NetworkInformation; using System.IO; using System.Xml; using Newtonsoft.Json.Linq; using System.Web; namespace tileserver { public class ControllerJSON { private Thread thread = null; private MetaReader metaReader = new MetaReader(); public ControllerJSON() { thread = new Thread(work); thread.Start(); } public void work() { Console.WriteLine(Program.folder); Console.WriteLine(Program.cache); Console.WriteLine(Program.fileExtension); Console.WriteLine(Program.port); TcpListener serverSocket = new TcpListener(IPAddress.Any, Program.port); TcpClient clientSocket = default(TcpClient); while (true) { serverSocket.Start(); try { while (true) { clientSocket = serverSocket.AcceptTcpClient(); ClientController clientController = new ClientController(clientSocket, metaReader); } } catch (Exception) { } try { serverSocket.Stop(); } catch (Exception) { } } } } class ClientController { private TcpClient clientSocket; private MetaReader metaReader; private Thread thread = null; private StreamReader streamReader = null; private StreamWriter streamWriter = null; public ClientController(TcpClient clientSocket, MetaReader metaReader) { this.metaReader = metaReader; this.clientSocket = clientSocket; this.clientSocket.ReceiveTimeout = 2000; this.clientSocket.SendTimeout = 2000; this.streamReader = new StreamReader(clientSocket.GetStream(), System.Text.Encoding.GetEncoding("Windows-1252"), true); this.streamWriter = new StreamWriter(clientSocket.GetStream()); thread = new Thread(work); thread.Start(); } private void work() { // Read Data try { string json = streamReader.ReadLine(); Tiles tiles = Newtonsoft.Json.JsonConvert.DeserializeObject(json); MetaReader.fillTiles(Program.folder, tiles); string result = Newtonsoft.Json.JsonConvert.SerializeObject(tiles) + "\n"; streamWriter.WriteLine(result); streamWriter.Flush(); } catch (Exception) { } try { clientSocket.Close(); } catch (Exception) { } } } }