小编use*_*878的帖子

添加和检索嵌入式资源编码

好吧,我觉得我的问题的答案是在线的,但我找不到它.我要做的就是将一个文本资源文件添加到我正在用CodeDom编译的程序中,然后在编译的程序中访问该文本文件.要添加嵌入式资源,我使用了以下代码:

        System.Resources.ResourceWriter writer = new System.Resources.ResourceWriter("Resources.resx");
        writer.AddResource("EoS.txt", Form1.MasterEncoder.GetBytes(Properties.Resources.Eos));
        writer.Generate();
        writer.Close();
        Parameters.EmbeddedResources.Add("Resources.resx");
Run Code Online (Sandbox Code Playgroud)

这里"参数"是我的编译器参数对象,"Eos.txt"是我正在尝试编写的文件,它是应用程序中的资源.这不会在我构建程序时抛出任何错误,但是当我尝试使用此代码在新编译的程序中获取此文本文件时,我将其添加到表单加载事件中:

         _assembly = Assembly.GetExecutingAssembly();
         _textStreamReader = new StreamReader(_assembly.GetManifestResourceStream("Resources.EoS.txt"));
         TextFile = _textStreamReader.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)

我粗略地得到这个错误:"值不能为null参数名称:stream." 我已经尝试将"资源"更改为程序的命名空间以及许多其他的小调整,但没有任何工作.我不确定我是否在完全错误的轨道上,但我认为我的问题在于CodeDom.有什么建议?

c# resources codedom

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

C ++套接字接收未收到正确的字节数?

我是C ++的新手,但是我试图学习TCP套接字编码的一些基础知识。无论如何,我已经能够发送和接收消息,但是我想给数据包加上数据包的长度前缀(就像我在过去制作的C#应用​​程序中所做的那样),因此当我的窗口获取FD_READ命令时,以下代码仅读取数据包的前两个字节以用作短整数。

char lengthBuffer[2];

int rec = recv(sck, lengthBuffer, sizeof(lengthBuffer), 0);

short unsigned int toRec = lengthBuffer[1] << 8 | lengthBuffer[0];
Run Code Online (Sandbox Code Playgroud)

令我感到困惑的是,在数据包进入“ rec”变量后,该变量表示读取了多少个字节,是一个字节,而不是两个字节;如果我将lengthBuffer设置为三个字符而不是两个字符,它将读取三个字节,但是如果是四个,它还会读取三个(仅奇数)。我无法确定我是在犯一些真正的愚蠢错误,还是从根本上误解了语言或API的某些部分。我知道recv不能保证将读取任何数量的字节,但是如果只有两个字节,则不应进行多次读取。

c++ sockets

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

标签 统计

c# ×1

c++ ×1

codedom ×1

resources ×1

sockets ×1