Alejandro Acuña
2024-08-12 831c7bd85763b5eb5ef46664c65f0181824f9e13
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
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)
            {
            }
 
        }
 
 
        
 
    }
 
 
 
 
 
 
}