2011-11-02 41 views
0

我試圖從使用Google Protocol Buffers的服務器上的客戶端接收一些數據,具體地說,是Jon Skeet的csharp端口。我執行以下操作:ReadRawVarint32() - Google協議緩衝區的問題csharp-port

using Google.ProtocolBuffers; 
... 
Stream InputStream = client.GetStream(); 
CodedInputStream input = CodedInputStream.CreateInstance(InputStream); 
... 
uint length = CodedInputStream.ReadRawVarint32(InputStream); 

我從最後一行的錯誤消息,我可以不能解決:一個對象引用該電源線以訪問非靜態成員「Google.ProtocolBuffers.CodedInputStream.ReadRawVarint32()」 。

Basicly我想做的事情會是這樣的Java版本是什麼:

InputStream iStream = client.getInputStream(); 
CodedInputStream input = CodedInputStream.newInstance(iStream); 
int read = is.read(); 
if(-1 != read) { 
    int length = CodedInputStream.readrawVarint32(read, is); 
    byte[] bytes = input.readRawBytes(length); 
    // My proto stuff 
    Communication.Packet container = null; 
    try { 
     container = Communication.Packet.parseFrom(bytes); 
    } catch (InvalidProtocolBufferException iPBE) { 
     continue; 
    } 
    AbstractMessage message = container; 
    if(container.hasLogin()) { 
     message = container.getLogin(); 
    } 
    System.out.println(message.toString()); 

任何幫助嗎?

在此先感謝。

回答

0

錯誤消息指出您正試圖訪問非靜態(即成員方法)而不使用對象引用。你需要改變你的方法調用類型CodedInputStream代替CodedInputStream類的對象進行操作:

input.ReadRawVarint32();

+0

對不起......我的錯誤。謝謝! – omniyo