using Newtonsoft.Json; using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; namespace WssGui { public class WsServer { private static IPHostEntry iPHostEntry = Dns.GetHostEntry("localhost"); private static IPAddress iPAddress = iPHostEntry.AddressList[0]; private static IPEndPoint iPEndPoint = new IPEndPoint(iPAddress, 11000); private static Socket socket = new Socket(iPAddress.AddressFamily, SocketType.Stream, ProtocolType.Tcp); private static byte[] bytes = new byte[1024]; private static Socket handlerSocket = null; public static void WsServerStart() { socket.Bind(iPEndPoint); socket.Listen(10); while (true) { handlerSocket = socket.Accept(); string data = null; data += WsServerResponseClient(); var clientMessage = data.Split(' '); if (clientMessage[0] == "SetUserSession") { var request = GetWebRequest("/set_session_user"); var dataSendtoServerApi = JsonConvert.SerializeObject(new { id_user = clientMessage[1], date_start = DateTime.Now.ToString() }, Formatting.Indented); using (var streamWriter = new StreamWriter(request.GetRequestStream())) { streamWriter.Write(dataSendtoServerApi); } var response = request.GetResponse(); using (var streamReader = new StreamReader(response.GetResponseStream())) { var jsonResponse = JsonConvert.DeserializeObject(streamReader.ReadToEnd()); WsServerSendMessage(jsonResponse.id_user_session.ToString()); WsServerHandlerClose(); } } else if (clientMessage[0] == "UpdateUserSession") { var request = GetWebRequest("/update_session_user"); var dataSend = JsonConvert.SerializeObject(new { Id = Convert.ToInt32(clientMessage[1]), date_finish = DateTime.Now.ToString() }, Formatting.Indented); using (var streamWriter = new StreamWriter(request.GetRequestStream())) { streamWriter.Write(dataSend); } request.GetResponse(); } } } private static WebRequest GetWebRequest(string path) { WebRequest request = WebRequest.Create($"http://127.0.0.1:5000{path}"); request.ContentType = "application/json"; request.Method = "POST"; return request; } public static string WsServerResponseClient() { return Encoding.UTF8.GetString(bytes, 0, handlerSocket.Receive(bytes)); } public static void WsServerSendMessage(string data) { handlerSocket.Send(Encoding.UTF8.GetBytes(data)); } public static void WsServerClose() { socket.Shutdown(SocketShutdown.Both); socket.Close(); } public static void WsServerHandlerClose() { handlerSocket.Shutdown(SocketShutdown.Both); handlerSocket.Close(); } public class RespSetSessionUser { public int id_user_session { get; set; } } } }