class Test
{
static Socket serverSocket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
static private string guid = "258EAFA5-E914-47DA-95CA-C5AB0DC85B11";
public void WS_Thread_Start()
{
Thread wsServer = new Thread(new ThreadStart(WS_Start))
{
IsBackground = true
};
wsServer.Start();
}
private void WS_Start()
{
serverSocket.Bind(new IPEndPoint(IPAddress.Any, 7777));
serverSocket.Listen(128);
serverSocket.BeginAccept(null, 0, OnAccept, null);
}
private static void OnAccept(IAsyncResult result)
{
byte[] buffer = new byte[1024];
try
{
Socket client = null;
string headerResponse = "";
if (serverSocket != null && serverSocket.IsBound)
{
client = serverSocket.EndAccept(result);
var i = client.Receive(buffer);
headerResponse = (Encoding.UTF8.GetString(buffer)).Substring(0, i);
}
if (client != null)
{
var key = headerResponse.Replace("ey:", "`").Split('`')[1].Replace("\r", "").Split('\n')[0].Trim();
var test1 = AcceptKey(ref key);
var newLine = "\r\n";
var response = "HTTP/1.1 101 Switching Protocols" + newLine
+ "Upgrade: websocket" + newLine
+ "Connection: Upgrade" + newLine
+ "Sec-WebSocket-Accept: " + test1 + newLine + newLine;
client.Send(Encoding.UTF8.GetBytes(response));
var i = client.Receive(buffer);
var subA = SubArray<byte>(buffer, 0, i);
client.Send(subA);
Thread.Sleep(10000);
}
}
catch (SocketException exception)
{
Utils.Logging(Utils.Type.DEBUG, exception.Message);
}
finally
{
if (serverSocket != null && serverSocket.IsBound)
{
serverSocket.BeginAccept(null, 0, OnAccept, null);
}
}
}
public static T[] SubArray<T>(T[] data, int index, int length)
{
T[] result = new T[length];
Array.Copy(data, index, result, 0, length);
return result;
}
private static string AcceptKey(ref string key)
{
string longKey = key + guid;
byte[] hashBytes = ComputeHash(longKey);
return Convert.ToBase64String(hashBytes);
}
static SHA1 sha1 = SHA1.Create();
private static byte[] ComputeHash(string str)
{
return sha1.ComputeHash(Encoding.ASCII.GetBytes(str));
}
}
Суть проблемы, есть фрагмент кода который работает и принимает сообщение от клиента и это же самое сообщение передает назад. Хотелось бы реализовать возможность отправки сообщений не в режиме попугая. А скажем вызывается класс Test с параметром string и этот же string уже передается клиенту.
Test("сообщение");
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
ПриветПытаюсь отправить картинку в Telegram боте(использую - эту библиотеку)
Помогите решить проблему,пробую вставить рекламу в свою игру,межстраничная реклама ,которая должна "всплыть" после смерти игрока,но когда...
Имеется дваcs файла, которые должны между собой взаимодействовать, но происходит это как-то странно