小编Jos*_*eph的帖子

将位图保存到MemoryStream中

我应该分配内存还是只分配内存流的对象:这样可以吗?

MemoryStream memoryStream = new MemoryStream();
bitmap.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
Run Code Online (Sandbox Code Playgroud)

如果我需要定义MemoryStream大小,我如何从Bitmap获取它?

c# memorystream bitmap

26
推荐指数
2
解决办法
6万
查看次数

在Javascript中将Base64数据转换并插入Canvas

我得到一个数据缓冲区代表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)

javascript html5 canvas html5-canvas

9
推荐指数
1
解决办法
3万
查看次数

设计/架构:web-socket一个连接与多个连接

在设计客户端/服务器体系结构时,将多个WEBSOCKET连接从同一进程多路复用到服务器(即共享一个连接)与在客户端中为每个线程/会话打开一个WEBSOCKET连接是否有任何优势(通常在连接到memcached或数据库服务器.)

我知道与每个连接相关的开销(例如RAM ......).但预计每个客户端的最多不到1K-10K.


具体用例:假设我有一台远程服务器,一边有多个会话,另一边我有多个客户端,每个客户端都会通过websocket服务器连接到不同的会话.在远程服务器中,有两种方法可以实现它:(1)每个会话创建自己的websocket连接(2)所有会话将使用相同的websocket连接.

从连接的角度来看,我喜欢共享解决方案(一个websocket连接到所有会话),因为websocket服务器受#of可用连接的限制(保存服务器/扩展).

但从流量/数据速度/性能的角度来看,如果会话将通过连接发送大量小包,那么,如果我们使用一个共享连接,我们将无法利用带宽(有效载荷.... /将少量小包收集到一个或将大包拆分成小包),因为我们可能必须从不同的会话向不同的客户端发送不同的包,在这种情况下,我们将无法收集少量包(小包),因为他们有不同的目的地和来自不同的来源!!,除非我们将创建管理每个会话数据的"虚拟连接"以最大化速度,但这会产生很多实现复杂性!

还有其他意见吗?

谢谢,JB.

memcached websocket

8
推荐指数
1
解决办法
3902
查看次数

异常:内存位置的EEFileLoadException

我启用所有异常,并得到这个奇怪的异常:

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)

c# exception

5
推荐指数
0
解决办法
6888
查看次数

检查 NamedPipeServerStream 是否在客户端启动的方法

我有一个使用 NamedPipeClientStream 的客户端和一个使用 NamedPipeServerStream 的服务器。

客户端可能在服务器之前启动,当它调用 clientStream.Connect(timeout) 时,我按预期得到 TimeoutException。

有什么方法可以在调用 Connect 之前检查是否有 NamedPipeServerStream 侦听以防止异常?

c# pipe namedpipeserverstream

5
推荐指数
2
解决办法
4327
查看次数

获取鼠标光标图像位置

我得到了鼠标位置和鼠标图像(图标).但我还需要一件我无法找到的东西:如何在代表鼠标位置的图标中获取光标的位置,意思是:鼠标光标的每个图标都有差异位置,例如默认鼠标光标将位于图标的0,0,但在移动图标中,光标将位于图像的中心(图标).

c# windows winapi

4
推荐指数
1
解决办法
283
查看次数

内部方法"使用"语句会导致数据损坏或访问冲突的麻烦吗?

我有一个任务,将数据设置为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后几秒或几分钟后?

c# multithreading using-statement

4
推荐指数
2
解决办法
192
查看次数

NamedPipeServerStream 接收 MAX=1024 字节,为什么?

我正在使用 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)

c# namedpipeserverstream

3
推荐指数
1
解决办法
4180
查看次数

我是否需要在托管C++中明确释放内存?

我已经管理了.net C++ dll,这是一个执行以下操作的函数:

unsigned char* mBytes = new unsigned char[hSize];
Run Code Online (Sandbox Code Playgroud)

如何在返回之前释放这个mBytes?

.net c++ memory-management c++-cli

1
推荐指数
1
解决办法
929
查看次数

128 位哈希保证无冲突

是否有保证不会发生冲突的 128 散列算法(无论是加密还是非加密散列)?

如果可以保证我的字符串不会超过特定长度(是否有这样的长度? - 我可以保证长度小于 100 个字符)

algorithm hash cryptography

0
推荐指数
1
解决办法
1472
查看次数