我应该分配内存还是只分配内存流的对象:这样可以吗?
MemoryStream memoryStream = new MemoryStream();
bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
Run Code Online (Sandbox Code Playgroud)
如果我需要定义MemoryStream大小,我如何从Bitmap获取它?
我得到一个数据缓冲区代表Base64中的图像.我得到的数据(代表base64中的图像)(部分数据)
193,109,51,74,182,71,212,38,78,62,211,48,81,145,244,39,244,250,215,192,113,46,101,136,203,149,44,6,90,147,197,215,109,66,251,69,47,138,111,202,43,239,122,45,108,125,22,6,149,44,84,103,136,198,74,212,41,171,203,188,187,69,121,183,255,0,7,75,156,191,140,190,45,181,219,141,43,195,214,107,30,129,3,145,38,110,60,135,185,35,130,119,4,108,244,238,0,227,3,140,86,85,237,134,149,241,3,69,158,251,71,134,93,31,88,211,72,82,1,30,100,76,70,65,12,9,12,141,207,94,184,32,140,215,45,47,196,111,130,177,187,34,120,79,197,65,84,224,8,175,93,20,99,176,31,107,24,250,96,85,141,47,227,159,195,111,11,219,223,46,133,225,175,17,91,73,120,170,178,189,196,137,49,96,185,218,50,247,44,64,27,155,167,173,123,252,61,144,97,242,8,63,102,156,234,207,227,169,43,115,77,245,230,119,122,111,104,173,23,78,167,204,103,121,165,108,217,46,88,184,40,124.....
成功解码.
现在我正在尝试将图像添加到我的画布而没有成功,如下所示:
function fillCanvasImage(x, y, width, height, image, pageID) {
if (image == "")
return;
var canvas = document.getElementById("AppPmainCanvas" + pageID);
if (canvas && canvas.getContext) {
var context = canvas.getContext('2d');
if (context) {
context.clearRect(0, 0, canvas.width, canvas.height);
var img = new Image();
img.src = base64_decode(image);
//img.onload = function () {
context.drawImage(img, 0, 0, canvas.width, canvas.height);
//}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我将数据格式转换为base64:
function base64_decode(data) {
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var o1, o2, o3, h1, h2, h3, h4, bits, i = …Run Code Online (Sandbox Code Playgroud) 在设计客户端/服务器体系结构时,将多个WEBSOCKET连接从同一进程多路复用到服务器(即共享一个连接)与在客户端中为每个线程/会话打开一个WEBSOCKET连接是否有任何优势(通常在连接到memcached或数据库服务器.)
我知道与每个连接相关的开销(例如RAM ......).但预计每个客户端的最多不到1K-10K.
具体用例:假设我有一台远程服务器,一边有多个会话,另一边我有多个客户端,每个客户端都会通过websocket服务器连接到不同的会话.在远程服务器中,有两种方法可以实现它:(1)每个会话创建自己的websocket连接(2)所有会话将使用相同的websocket连接.
从连接的角度来看,我喜欢共享解决方案(一个websocket连接到所有会话),因为websocket服务器受#of可用连接的限制(保存服务器/扩展).
但从流量/数据速度/性能的角度来看,如果会话将通过连接发送大量小包,那么,如果我们使用一个共享连接,我们将无法利用带宽(有效载荷.... /将少量小包收集到一个或将大包拆分成小包),因为我们可能必须从不同的会话向不同的客户端发送不同的包,在这种情况下,我们将无法收集少量包(小包),因为他们有不同的目的地和来自不同的来源!!,除非我们将创建管理每个会话数据的"虚拟连接"以最大化速度,但这会产生很多实现复杂性!
还有其他意见吗?
谢谢,JB.
我启用所有异常,并得到这个奇怪的异常:
MyApp.exe中0x773ac41f的第一次机会异常:Microsoft C++异常:内存位置0x0038c23c处的EEFileLoadException.
"System.Xml.Serialization.XmlSerializer reader = new System.Xml.Serialization.XmlSerializer(typeof(T));"中的问题
public T GetObjectFromFile(string fileFullPath)
{
if (System.IO.File.Exists(fileFullPath) == false)
{
return default(T);
}
System.IO.StreamReader file = new System.IO.StreamReader(fileFullPath);
try
{
System.Xml.Serialization.XmlSerializer reader = new System.Xml.Serialization.XmlSerializer(typeof(T));
return (T)reader.Deserialize(file);
}
catch
{
return default(T);
}
finally
{
file.Close();
}
}
Run Code Online (Sandbox Code Playgroud) 我有一个使用 NamedPipeClientStream 的客户端和一个使用 NamedPipeServerStream 的服务器。
客户端可能在服务器之前启动,当它调用 clientStream.Connect(timeout) 时,我按预期得到 TimeoutException。
有什么方法可以在调用 Connect 之前检查是否有 NamedPipeServerStream 侦听以防止异常?
我得到了鼠标位置和鼠标图像(图标).但我还需要一件我无法找到的东西:如何在代表鼠标位置的图标中获取光标的位置,意思是:鼠标光标的每个图标都有差异位置,例如默认鼠标光标将位于图标的0,0,但在移动图标中,光标将位于图像的中心(图标).
我有一个任务,将数据设置为FIFO,然后另一个线程逐个读取FIFO内的数据,然后通过网络发送.调用时数据转换为字节数组FIFO.Add,如下所示:
public byte[] ByteArraySerialize()
{
using (MemoryStream m = new MemoryStream())
{
using (BinaryWriter writer = new BinaryWriter(m))
{
writer.Write((int)this.Opcode);
writer.Write(this.Data);
}
return m.ToArray();
}
}
Run Code Online (Sandbox Code Playgroud)
我的问题:在发送方线程从FIFO中读取数据之前,数据是否可能被破坏或处理?我的问题是了解using内部方法:
这是使用using内部方法的方式可能会导致GC删除MemoryStream,在线程读取数据之前,让我们说在数据进入FIFO后几秒或几分钟后?
我正在使用 NamedPipeStream、客户端和服务器,我将数据从客户端发送到服务器,数据是一个包含二进制数据的序列化对象。
当服务器端接收到数据时,它总是有 MAX 1024 大小,而客户端发送更多!!因此,当尝试序列化数据时,这会导致以下异常:“未终止的字符串。预期的分隔符:”。路径“数据”,第 1 行,位置 1024。”
服务器缓冲区大小定义为:
protected const int BUFFER_SIZE = 4096*4;
var stream = new NamedPipeServerStream(PipeName,
PipeDirection.InOut,
1,
PipeTransmissionMode.Message,
PipeOptions.Asynchronous,
BUFFER_SIZE,
BUFFER_SIZE,
pipeSecurity);
stream.ReadMode = PipeTransmissionMode.Message;
Run Code Online (Sandbox Code Playgroud)
我正在使用 :
/// <summary>
/// StreamWriter for writing messages to the pipe.
/// </summary>
protected StreamWriter PipeWriter { get; set; }
Run Code Online (Sandbox Code Playgroud)
读取函数:
/// <summary>
/// Reads a message from the pipe.
/// </summary>
/// <param name="stream"></param>
/// <returns></returns>
protected static byte[] ReadMessage(PipeStream stream)
{
MemoryStream memoryStream = new MemoryStream(); …Run Code Online (Sandbox Code Playgroud) 我已经管理了.net C++ dll,这是一个执行以下操作的函数:
unsigned char* mBytes = new unsigned char[hSize];
Run Code Online (Sandbox Code Playgroud)
如何在返回之前释放这个mBytes?
是否有保证不会发生冲突的 128 散列算法(无论是加密还是非加密散列)?
如果可以保证我的字符串不会超过特定长度(是否有这样的长度? - 我可以保证长度小于 100 个字符)
c# ×6
.net ×1
algorithm ×1
bitmap ×1
c++ ×1
c++-cli ×1
canvas ×1
cryptography ×1
exception ×1
hash ×1
html5 ×1
html5-canvas ×1
javascript ×1
memcached ×1
memorystream ×1
pipe ×1
websocket ×1
winapi ×1
windows ×1