1
我正在使用NotificationListenerService
,我想在調用onNotificationPosted()
時將數據發送到遠程套接字。 但我有套接字連接的問題,但是當我使用BufferedWriter
或任何其他輸出類寫東西時,它從不將它發送到遠程套接字,直到我用android studio關閉應用程序和服務。 這是我發送數據代碼:將數據從服務器發送到遠程套接字的問題
new Thread(new Runnable() {
@Override
public void run() {
try {
// DataOutputStream outputStream = new DataOutputStream(socket.getOutputStream());
// outputStream.writeUTF(send_counter + " $title: " + title + " $mes: " + mes);
Log.d(TAG, "started sending info");
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
bw.write(send_counter + " $title: " + title + " $mes: " + mes);
bw.newLine();
bw.flush();
// bw.close();
// outputStream.writeInt(icon.length);
// outputStream.write(icon);
Log.d(TAG, "info sent");
// outputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}).start();
後,纔在Android上使用工作室停止按鈕完全停止應用程序,服務器收到來自客戶端的消息。 此代碼適用於發送消息,因爲此代碼適用於我的主應用程序,但僅當後臺服務使用它時纔會出現問題。
這是我的服務器代碼(C#):
TcpClient client = server.AcceptTcpClient();
NetworkStream nwStream = client.GetStream();
PostToConsole("Phone has connected from: " + ((IPEndPoint)client.Client.RemoteEndPoint).Address + ":" + ((IPEndPoint)client.Client.RemoteEndPoint).Port);
byte[] buffer = new byte[client.ReceiveBufferSize];
int res = nwStream.Read(buffer, 0, client.ReceiveBufferSize);
while (res > 0)
{
string data = Encoding.UTF8.GetString(buffer, 0, res);
PostToConsole(data + ((IPEndPoint)client.Client.RemoteEndPoint).Address);
buffer = new byte[client.ReceiveBufferSize];
res = nwStream.Read(buffer, 0, client.ReceiveBufferSize);
}
}
第一塊代碼是NotificationListenerService中的一個方法。所以你的意思是我應該創建一個新的服務,僅用於與服務器的通信? –
@EldarAzulay,是 – Vyacheslav
與新服務相同的問題。我正在使用與上面完全相同的代碼,我只是將它寫在'onStart()'方法中。 –