2012-09-04 46 views
0

我正準備嘗試我的第一個涉及網絡通信的項目。這只是一個修補程序玩具應用程序,目的是自學 - 這裏沒有任何關鍵任務。我將需要兩個節點來相互溝通。一個將是一個Android平臺,所以我將使用Java。另一個節點將是運行Debian Linux的RaspberryPi。雖然我也可以在這方面使用Java,也許只是使用RPC,但我想要做的是開發我自己的一些與實現無關的TCP/IP協議,以便兩者進行通信,然後讓每個實現它最好。我的意思是「協議」是我想要一組標準的消息來回傳遞,以及每個消息的一些值。例如: -從哪裏開始進行TCP通信?

"Protocol" Definition: 
MESSAGE TYPE A (Float arg, Int arg) 
MESSAGE TYPE B (Int arg) 
MESSAGE TYPE C (Int arg, String arg, Int arg) 

一個例子 「對話」:

Node 1        Node 2 
       A(5.4, 4) ---> 
       B(6)   ---> 
     <---- C(3, 'Hello', 0xFF) 
       B(5)   ---> 
     <---- A(43.0, 16) 

所以我的問題是:

(1)請問以上,甚至有意義嗎?我需要澄清我的意圖嗎?提供更多信息?這是我第一次在兩個正在運行的程序之間進行網絡通信,所以我可能會離開我所要求的基礎。如果我以錯誤的方式接近,我會很樂意提供更好的建議。

(2)我該如何解決這個問題?我只是將一個長字符串填入TCP數據包中嗎?有沒有更好的辦法?

謝謝!

回答

1

你只需要用你想要的數據填充緩衝區,然後學習如何通過TCP套接字打開和發送數據。內核將處理如何安排有效負載以及如何控制TCP流。在服務器端,您必須學習如何偵聽TCP套接字並讀取傳入數據。

+0

感謝您的回答!什麼類型的數據進入緩衝區?一串人物?字節? – loneboat

+0

緩衝區是一個字節數組。你可以寫任何你想要的東西,但是當你想編寫像整數這樣的多字節實體時,你必須注意網絡/主機順序轉換。 – ziu

1

套接字編程是你應該搜索的詞。