Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过Websocket从Javascript客户端向C#服务器发送图像,并将其保存在文件中_Javascript_C#_Websocket - Fatal编程技术网

通过Websocket从Javascript客户端向C#服务器发送图像,并将其保存在文件中

通过Websocket从Javascript客户端向C#服务器发送图像,并将其保存在文件中,javascript,c#,websocket,Javascript,C#,Websocket,我正试图从Javascript客户端向C#server发送一个图像,并将该图像保存在一个文件中。 websocket已经建立,我可以从客户端向服务器发送消息。 该消息是我从Javascript中的imagedata获得的字节数组。 我的服务器获取bytearray,但当我尝试将bytearray转换为映像时,会得到System.ArgumentException:“无效参数。” 以下是我从Javascript客户端获得的代码: var context = canvas.getContext('2

我正试图从Javascript客户端向C#server发送一个图像,并将该图像保存在一个文件中。 websocket已经建立,我可以从客户端向服务器发送消息。 该消息是我从Javascript中的imagedata获得的字节数组。 我的服务器获取bytearray,但当我尝试将bytearray转换为映像时,会得到System.ArgumentException:“无效参数。” 以下是我从Javascript客户端获得的代码:

var context = canvas.getContext('2d');
ar data2 = context.getImageData(0, 0, 800, 600).data;
var byteArray = new Array(data2);
connection.send(data);
这是我在C#服务器上的代码:

当我尝试创建新的Memorystream(缓冲区)时,会发生异常。 有人能帮你解决这个问题吗?
谢谢

是否可以以Base64格式发送图像?这是一个简单的字符串,易于编码和解码…这就是我需要的提示!谢谢欢迎你
        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 = (System.Text.Encoding.UTF8.GetString(buffer)).Substring(0, i);
                // write received data to the console
                Console.WriteLine(headerResponse);

            }
            if (client != null)
            {
                /* Handshaking and managing ClientSocket */

                var key = headerResponse.Replace("ey:", "`")
                          .Split('`')[1]                     
                          .Replace("\r", "").Split('\n')[0]  
                          .Trim();

                // key should now equal dGhlIHNhbXBsZSBub25jZQ==
                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
                     //+ "Sec-WebSocket-Protocol: chat, superchat" + newLine
                     //+ "Sec-WebSocket-Version: 13" + newLine
                     ;


                client.Send(Encoding.UTF8.GetBytes(response));
                var i = client.Receive(buffer); // wait for client to send a message

                using (Image image = Image.FromStream(new MemoryStream(buffer)))
                {
                    image.Save("output.png", ImageFormat.Png);
                }


            }
        }
        catch (SocketException exception)
        {
            throw exception;
        }
        finally
        {
            if (serverSocket != null && serverSocket.IsBound)
            {
                serverSocket.BeginAccept(null, 0, OnAccept, null);
            }
        }
    }