2017-04-08 27 views
0

我有點絕望。我正在研究一個應用程序,該應用程序可以將污染數據可視化。應用程序通過WiFi直接連接到傳感器,傳感器是組主機。然後我應該連接到端口5001並每2分鐘檢索一次數據。這些數據應該被髮送到谷歌地圖活動,並在信息窗口中進行可視化處理。更改活動時,如何維護與服務器的TCP連接?

此時我只能創建一個立即關閉的TCP連接,我跟着這個Really simple TCP client

所以我需要建立一個TCP連接,它不會關閉,而且在我進行其他活動時也會運行。我不需要發送任何消息,只需要檢索數據。

我看着這How to keep the android client connected to the server even on activity changes and send data to server?,但不明白我是如何執行我的情況下的代碼。

你是如何做到這一點的?感謝任何幫助。

回答

1

您的android應用程序是一個客戶端,每當您需要獲取數據時,您都可以從服務器上獲取數據。

如果服務器在阻塞模式下工作,你可以發送一個請求到服務器和服務器發送通過打開的連接

這裏響應與插座端/服務器連接的一些例子:

https://examples.javacodegeeks.com/android/core/socket-core/android-socket-example/

https://github.com/codepath/android_guides/wiki/Sending-and-Receiving-Data-with-Sockets

你可以找到更多的例子

此時此刻我只能夠說 倒閉立即

它依賴於你的服務器的設計,客戶端應用程序將請求發送到服務器,如果服務器發回的響應創建TCP連接你可以得到它,但如果服務器沒有響應發送您的連接將被關閉

所以我需要當我在其他活動,以建立不關閉TCP連接,也 運行。我不需要發送任何 的消息,只檢索數據

見上面的鏈接,就沒有必要創建一個不緊密連接,您應該把您的要求,每次從服務器獲取響應你需要

+0

嗨!謝謝你的答案。 所以我沒有設計服務器。以前我只創建了TCP客戶端。這是因爲傳感器將充當服務器。我只是連接到一個端口並獲取傳感器每2分鐘發送的數據。我可以用上面的代碼鏈接嗎?或者你認爲我的舊代碼甚至可能工作?在「真正簡單的TCP客戶端」鏈接中的一個? – Kspr

+0

我不應該發送命令到服務器,我只會連續讀取套接字。 – Kspr