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<Tiles>(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)
|
{
|
}
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
}
|