123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121 |
- 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<RespSetSessionUser>(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; }
- }
- }
- }
|