Few days I'm trying to send a message from C++ to Java over the
network but unsuccessfully.
I needed to send a several messages over one connection. I'm doing
this:
//C++ side
....
void MainWindow::client_connected() {
GPSChatMessage msg = GPSChatMessage();
msg.set_type(proto::GPSChatMessage::AUTHORIZATION_REQUEST);
msg.mutable_auth_req_msg()->set_login("bsod");
msg.mutable_auth_req_msg()->set_password("*****");
client->send(msg);
}
....
....
void Client::send(const GPSChatMessage & msg) {
QDataStream to(socket);
char * buffer = new char[msg.ByteSize() + 4];
ZeroCopyOutputStream * os = new
ArrayOutputStream(buffer,msg.ByteSize() + 4,sizeof(char));
CodedOutputStream * cos = new CodedOutputStream(os);
cos->WriteLittleEndian32(msg.ByteSize()); //Tryed
"WriteVariant32", didn't help
msg.SerializeToCodedStream(cos);
delete cos;
delete os;
to.writeBytes(buffer,msg.ByteSize() + 4);
delete buffer;
}
//Java side:
//(I have a thread, that represents user connection. "from" - is an
InputStream from socket.
public void run() {
while (!interrupted()) {
try {
GPSChatMessage msg = GPSChatMessage.parseDelimitedFrom(from);
handler.handle(msg);
} catch (IOException ex) {
Logger.getLogger(ClientThread.class.getName()).log(Level.SEVERE,
null, ex);
}
When I sending a message from C++, I'm getting 4 exceptions in Java:
10.07.2010 14:30:42 net.ClientThread run
SEVERE: null
com.google.protobuf.InvalidProtocolBufferException: Message missing
required fields: type
at
com.google.protobuf.UninitializedMessageException.asInvalidProtocolBufferException(Unknown
Source)
at proto.GPSChatProtocol$GPSChatMessage
$Builder.buildParsed(GPSChatProtocol.java:299)
at proto.GPSChatProtocol$GPSChatMessage$Builder.access
$200(GPSChatProtocol.java:247)
at proto.GPSChatProtocol
$GPSChatMessage.parseDelimitedFrom(GPSChatProtocol.java:218)
at net.ClientThread.run(ClientThread.java:54)
10.07.2010 14:30:43 net.ClientThread run
SEVERE: null
com.google.protobuf.InvalidProtocolBufferException: Message missing
required fields: type
at
com.google.protobuf.UninitializedMessageException.asInvalidProtocolBufferException(Unknown
Source)
at proto.GPSChatProtocol$GPSChatMessage
$Builder.buildParsed(GPSChatProtocol.java:299)
at proto.GPSChatProtocol$GPSChatMessage$Builder.access
$200(GPSChatProtocol.java:247)
at proto.GPSChatProtocol
$GPSChatMessage.parseDelimitedFrom(GPSChatProtocol.java:218)
at net.ClientThread.run(ClientThread.java:54)
10.07.2010 14:30:43 net.ClientThread run
SEVERE: null
com.google.protobuf.InvalidProtocolBufferException: Message missing
required fields: type
at
com.google.protobuf.UninitializedMessageException.asInvalidProtocolBufferException(Unknown
Source)
at proto.GPSChatProtocol$GPSChatMessage
$Builder.buildParsed(GPSChatProtocol.java:299)
at proto.GPSChatProtocol$GPSChatMessage$Builder.access
$200(GPSChatProtocol.java:247)
at proto.GPSChatProtocol
$GPSChatMessage.parseDelimitedFrom(GPSChatProtocol.java:218)
at net.ClientThread.run(ClientThread.java:54)
10.07.2010 14:30:43 net.ClientThread run
SEVERE: null
com.google.protobuf.InvalidProtocolBufferException: Protocol message
end-group tag did not match expected tag.
at
com.google.protobuf.InvalidProtocolBufferException.invalidEndTag(Unknown
Source)
at
com.google.protobuf.CodedInputStream.checkLastTagWas(Unknown Source)
at com.google.protobuf.AbstractMessageLite
$Builder.mergeFrom(Unknown Source)
at com.google.protobuf.AbstractMessage
$Builder.mergeFrom(Unknown Source)
at com.google.protobuf.AbstractMessage
$Builder.mergeFrom(Unknown Source)
at com.google.protobuf.AbstractMessageLite
$Builder.mergeDelimitedFrom(Unknown Source)
at com.google.protobuf.AbstractMessage
$Builder.mergeDelimitedFrom(Unknown Source)
at proto.GPSChatProtocol
$GPSChatMessage.parseDelimitedFrom(GPSChatProtocol.java:218)
at net.ClientThread.run(ClientThread.java:54)
I'm googling a lot, but I really don't know what to do. What I'm doing
wrong?
--
You received this message because you are subscribed to the Google Groups
"Protocol Buffers" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/protobuf?hl=en.