0
我使用Tcp套接字在CLR C++(服務器)與Android(客戶端)之間進行通信,而對於GUI使用.Net。 傳輸和接收數據。在下使用背景工人++應用異步套接字連接,服務器斷開連接時,客戶端GUI掛起TCP通信
if(backgroundworker1->CancellationPending)
{
listenerSocket->Close(); // Listener Socket is Closed
netStream->Close();
serverSocket->Close();
serverSocket->Shutdown(SocketShutdown::Both);
e->Cancel;
break;
}
雖然Android中我使用異步類用於執行,並接收來自插座文本到一個Handler。而在Doinbackground函數中,我正在使用此代碼。
try
{
socket = new Socket(dstAddress, dstPort);
BufferedReader inputStream = new BufferedReader(new InputStreamReader(socket.getInputStream()));
do
{
try
{
if (!inputStream.ready())
{
if (message != null)
{
MainActivity.handler.obtainMessage(0, 0, -1,"Server: " + message).sendToTarget();
message = "";
}
}
int num = inputStream.read();
message += Character.toString((char) num);
Log.e(message,message);
}
catch (Exception classNot)
{
Log.e("Client TASK","classnot exception");
}
}
while (!message.equals("bye"));
inputStream.close();
socket.close();
}
我不明白,雖然我從服務器發送BYE消息和(Backgroundworker1-> CancellationPending) 所有服務器套接字被關閉和移動插座被關閉,爲什麼是UI不響應?請幫助..