1
我無法獲得Android(客戶端)和c#應用(服務器)之間的套接字連接以正確讀取響應。插槽純文本響應中斷
我已經成功地從android發送一條消息到C#,我正在閱讀它的罰款。但是,當我嘗試向Android發送確認信息時,我不知道處理這種情況的正確方法,而且我不得不在一些教程不清楚的地方做出一些假設。我am在android中獲取響應,但它不是100%正確的。我通過Wireshark驗證過c#發送了我想要發送的內容,並且文本看起來很好,直到它到達android。
C#:
public void SendClientMessage()
{
NetworkStream clientStream = _Client.GetStream();
ASCIIEncoding encoder = new ASCIIEncoding();
byte[] buffer = encoder.GetBytes("Hello Client!"); //Static test message
clientStream.Write(buffer, 0, buffer.Length);
clientStream.Flush();
}
...
Android:
private void listenResponse()
{
Log.i(TAG, "listenRespose() Listening...");
try
{
InputStream is = socket.getInputStream();
BufferedInputStream bis = new BufferedInputStream(is);
byte[] buffer = new byte[1024];
int countBytesRead = bis.read(buffer, 0, 8);
String response = new String(buffer);
Log.i(TAG, "listenResponse() Heard: " + response);
}
catch (IOException e)
{
Log.e(TAG, "listenResponse() IOException", e);
e.printStackTrace();
}
Log.i(TAG, "listenResponse() Done Listening.");
}
...
WireShark shows:
Hello Client!
...
Android LogCat shows:
listenRespose() Listening...
listenResponse() Heard: Hello Cl??????????????????????????? [... ?s continue for a long time]
listenResponse() Done Listening.
如果不是我初始化這樣我的字符串:
String response = new String(buffer, 0, countBytesRead);
至少我沒有得到所有的問號,但我仍然沒有得到我應該得到的完整字符串。我初始化我的字節[]錯誤,還是有不同的方式來做到這一點,更適合純文本?
是的!謝謝!我討厭這樣的事情,我只關注字節數組上的1024維度大小。衛生署!非常感謝先生 – maxx233 2012-03-06 10:03:18