我的团队和我解析从我们的服务器收到的字符串有这个讨厌的问题。该服务器是很简单的插座东西在QT做这里的发送数据功能:客户端字符串编码java
void sendData(QTcpSocket *client,QString response){
QString text = response.toUtf8();
QByteArray block;
QDataStream out(&block, QIODevice::WriteOnly);
out << (quint32)0;
out << text;
out.device()->seek(0);
out << (quint32)(block.size() - sizeof(quint32));
try{
client->write(block);
}
catch(...){...
客户是在Java中,也是相当标准的插座的东西,这里就是我们现在所在的尝试许多不同的方式后,如果连接与它发送一个字符串“发送握手”以字符串的在如在第一个代码块看到之前发送的字节大小的服务器取得
Socket s;
try {
s = new Socket(URL, 1987);
PrintWriter output = new PrintWriter(s.getOutputStream(), true);
InputStreamReader inp = new InputStreamReader(s.getInputStream(), Charset.forName("UTF-8"));
BufferedReader rd = new BufferedReader(inp);
String st;
while ((st = rd.readLine()) != null){
System.out.println(st);
}...
:解码来自服务器的响应。这通知客户端它应该向服务器发送认证。截至目前,我们从服务器获得的字符串如下所示: S e n d H a n d s h a k e
我们已经使用诸如string encode/decode tool之类的工具来尝试和评估字符串是如何编码的,但是它在每个配置上都失败了。
我们不知道这是什么编码,如果有的话,或者如何解决它。 任何帮助将不胜感激。
它看起来像一个编码问题。收到的字符串中有一个“秘密消息”。无论如何,*使用像wireshark或tcpdump这样的工具来查看线上数据以消除猜测* :) – 2011-12-13 21:41:28
将现在查看这些工具,谢谢 – okin33 2011-12-13 21:47:13
您的代码示例从不分配块。它应该有block =响应。toUtf8()? – Thomas 2011-12-13 21:53:26