【发布时间】:2014-07-25 19:55:23
【问题描述】:
我的 C++ 客户端 - Java 服务器应用程序有一个小问题。 套接字成功连接,并传输了几条消息,但接下来是这部分:
msgBuilder<<"TASK?\n";
mymsg = msgBuilder.str();
send(tcp_sock,mymsg.c_str(),8,0);
msgBuilder.str("");
msgBuilder.clear();
java端读取
msg = in.readLine();
while(!(msg.equals("TASK?"))){
System.out.println("Got "+msg+" expected TASK?");
msg = in.readLine();
}
问题是,它读取了两个我认为是空字符,出于某种原因我无法在此处粘贴。 我猜我可以通过切换到“包含”来克服它,但我对造成这种情况的原因很感兴趣?
【问题讨论】:
-
send正在传输 8 个字节,而 msg 是 6 个字节,因此您将在换行符后的缓冲区中获得 2 个字节的垃圾。你想发送 mymsg.length()。 -
哦,复制粘贴代码的危害!谢谢伙计,实际上是之前的 send 调用在缓冲区中留下了垃圾。问题解决了!
-
您还需要先检查
msg是否有null,然后再对它进行任何操作。 -
另外,这看起来像 C++ 而不是 C
-
@ChrisStratton 也是真的,会改的