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