相关疑难解决方法(0)

使用Protobuf-net,我突然得到一个关于未知线型的例外

(这是我在我的RSS中看到的一个问题的重新发布,但被OP删除了.我重新添加了它,因为我已经在不同的地方多次询问过这个问题; wiki为"好"形成")

突然间,我ProtoException在反序列化时收到了一个消息:未知的线型6

  • 什么是线型?
  • 有哪些不同的线型值及其描述?
  • 我怀疑一个字段导致了问题,如何调试这个?

c# protobuf-net

60
推荐指数
4
解决办法
5万
查看次数

循环直到TcpClient响应完全读取

我写了一个简单的TCP客户端和服务器.问题在于客户.

我在阅读服务器的整个响应时遇到了一些麻烦.我必须让线程休眠以允许发送所有数据.

我已经尝试了几次将此代码转换为一个循环,直到服务器完成发送数据.

// Init & connect to client
TcpClient client = new TcpClient();
Console.WriteLine("Connecting.....");
client.Connect("192.168.1.160", 9988);

// Stream string to server
input += "\n";
Stream stm = client.GetStream();
ASCIIEncoding asen = new ASCIIEncoding();
byte[] ba = asen.GetBytes(input);
stm.Write(ba, 0, ba.Length);

// Read response from server.
byte[] buffer = new byte[1024];

System.Threading.Thread.Sleep(1000); // Huh, why do I need to wait?

int bytesRead = stm.Read(buffer, 0, buffer.Length);
response = Encoding.ASCII.GetString(buffer, 0, bytesRead);
Console.WriteLine("Response String: "+response);

client.Close();
Run Code Online (Sandbox Code Playgroud)

.net c# stream tcpclient

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

Protobuf-Net 序列化对象,原型无法访问

假设我有以下课程:

public class Test {
  int x { get; set; }
  int y { get; set; }
  Vector3 coords { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

如果我不能在来自外部程序集的类上使用[ProtoContract][ProtoMember(x)]属性,我该如何序列化这个对象Vector3

我已阅读如何使用 protobuf-net 或其他序列化程序序列化 3rd 方类型?但它很模糊(例如,我不知道是否可以混合使用 TypeModel 和属性方法,或者如果我选择仅使用 TypeModel 方法等,如何将未知类型成员作为字段添加到已知类型成员中),所以我需要我的情况的一个具体例子。

例如,我像这样声明 TypeModel:

RuntimeTypeModel.Default.Add(typeof(Vector3), false).Add(1, "x").Add(2, "y").Add(3, "z");
RuntimeTypeModel.Default.Add(typeof(SerializableTestClass), false).Add(1, "_x").Add(2, "_y").Add(3, "_coords");
Run Code Online (Sandbox Code Playgroud)

序列化/反序列化:

if (GUILayout.Button("Serialize")) {
    SerializableTestClass testClass = new SerializableTestClass();
    testClass.changeMembers();
    RuntimeTypeModel.Default.Serialize(_serializedObject, testClass);
}

if (GUILayout.Button("Deserialize")) {
    SerializableTestClass test = (SerializableTestClass) RuntimeTypeModel.Default.Deserialize(_serializedObject, null, typeof(SerializableTestClass));
    Debug.Log("Deserialized object: " …
Run Code Online (Sandbox Code Playgroud)

c# serialization protobuf-net

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

标签 统计

c# ×3

protobuf-net ×2

.net ×1

serialization ×1

stream ×1

tcpclient ×1