Добавление входящего параметра string и его передача

169
15 апреля 2018, 22:01
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("сообщение");
READ ALSO
Не запускается процесс process.start()

Не запускается процесс process.start()

При выполнении программы не запускается процесс

212
Почему Telegram бот не отправляет изображение?

Почему Telegram бот не отправляет изображение?

ПриветПытаюсь отправить картинку в Telegram боте(использую - эту библиотеку)

192
Unity3d Реклама Admob

Unity3d Реклама Admob

Помогите решить проблему,пробую вставить рекламу в свою игру,межстраничная реклама ,которая должна "всплыть" после смерти игрока,но когда...

186
Подскажите пожалуйста, в чем проблема

Подскажите пожалуйста, в чем проблема

Имеется дваcs файла, которые должны между собой взаимодействовать, но происходит это как-то странно

183