Проблемы с ReadRawVarint32 () - буфер протокола Google csharp-port - PullRequest
0 голосов
/ 02 ноября 2011

Я пытаюсь получить некоторые данные от клиента на сервере, используя буфер протокола Google, конкретно, csharp-порт Джона Скита. Я делаю следующее:

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

В последней строке я получаю сообщение об ошибке, которое не могу решить: требуется ссылка на объект для доступа к нестатическому члену ' Google.ProtocolBuffers.CodedInputStream.ReadRawVarint32 () '.

В основном то, что я хочу сделать, было бы так в 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());

Любая помощь?

Заранее спасибо.

1 Ответ

0 голосов
/ 02 ноября 2011

В сообщении об ошибке указывается, что вы пытаетесь получить доступ к нестатическому (то есть к методу члена) без использования ссылки на объект. Вам нужно изменить вызов метода для работы с объектом типа CodedInputStream вместо класса CodedInputStream:

input.ReadRawVarint32();

...