我的團隊和我解析從我們的服務器收到的字符串有這個討厭的問題。該服務器是很簡單的插座東西在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