C++ c++;应用程序可以';无法从c#应用程序接收连续消息
我的问题是当我这样做的时候C++ c++;应用程序可以';无法从c#应用程序接收连续消息,c++,protocol-buffers,C++,Protocol Buffers,我的问题是当我这样做的时候 TcpClient con = new TcpClient ("127.0.0.1", 5432); NetworkStream str = con.GetStream (); Annoucement msg = new Annoucement (); msg.typ = Annoucement.msgType.NOWY_GRACZ; Serializer.SerializeWithLength
TcpClient con = new TcpClient ("127.0.0.1", 5432);
NetworkStream str = con.GetStream ();
Annoucement msg = new Annoucement ();
msg.typ = Annoucement.msgType.NOWY_GRACZ;
Serializer.SerializeWithLengthPrefix (str, msg, PrefixStyle.Base128);
Serializer.SerializeWithLengthPrefix (str, msg, PrefixStyle.Base128);
我尝试使用使用协议缓冲区的自定义库进行接收
Connection con = server.accept();
Annoucement ann = con.receive();
cout << ann.typ() << endl;
ann = con.receive();
cout << ann.typ() << endl;
在构造函数中初始化一个变量
FileInputStream* raw_input;
raw_input = new FileInputStream(s); //s is socket in this example communication
如何修改它,以便从套接字读取连续消息?从:
将*数据设置为直接指向
CodedInputStream的未读部分
基础缓冲区,以及*到
缓冲区的大小,但不包括
推进流的当前位置
这将始终产生
缓冲区非空或返回false。如果
调用者使用任何这些数据,
然后它应该调用Skip()来跳过
超过消耗的字节数。这可能是
用于实现外部fast
不支持数据类型的解析例程
由CodedInputStream覆盖
接口
我发现您的代码中缺少以下内容:
coded_input.Skip()
(如果使用正确,应涵盖上述第1部分)ParseFromArray
代码之前我不确定
将*数据设置为直接指向
CodedInputStream的未读部分
基础缓冲区,以及*到
缓冲区的大小,但不包括
推进流的当前位置
这将始终产生
缓冲区非空或返回false。如果
调用者使用任何这些数据,
然后它应该调用Skip()来跳过
超过消耗的字节数。这可能是
用于实现外部fast
不支持数据类型的解析例程
由CodedInputStream覆盖
接口
我发现您的代码中缺少以下内容:
coded_input.Skip()
(如果使用正确,应涵盖上述第1部分)ParseFromArray
代码之前我不确定
FileInputStream* raw_input;
raw_input = new FileInputStream(s); //s is socket in this example communication