2015-09-06 58 views
0

我需要從我的android應用程序發送一些短信到我的Windows c#應用程序。到目前爲止,我已經找到了使用TCP連接:發送消息從android到pc在相同的WLAN

Socket socket = new Socket(serverAddr, Integer.parseInt(myPort)); 

在我的客戶端(JAVA),以及:

IPAddress ipAd = IPAddress.Parse(ip); 
myList = new TcpListener(ipAd, Int32.Parse(port)); 
myList.Start(); 

在我的服務器端(C#)。 Here is all the code

問題是,我無法負擔檢索每個安裝服務器IP ...靜態IP不是一個選項。於是我開始搜索廣播解決方案,但也有像在網絡上有很多可能的選項:

MulticastSocket 
UdpClient 

而其他的,我不能告訴他們還是最適合我的情況下,可以在任何一個之間的差異幫我解決這個問題?任何解釋或代碼都是完美的。

最後,如果我想設置一個UDP連接,我需要一個特定的端口嗎?或者任何人都應該罰款?

回答

0

這一切都取決於發件人(Android應用程序)如何識別收件人。關於如何確定收件人的要求必須有一些邏輯。

一些常見的情況是: - 一對一即成對的對等體。在這種情況下,發件人知道收件人(也是IP地址) - 一對多,即發件人將郵件發送到「主題」,然後將郵件轉發到一定數量的(註冊)收件人。 「主題」知道所有接收者(即他們的IP地址)的細節,並且發送者將使用預定的IP將消息發送到「主題」,例如,在除非你指定你的應用場景更多的細節恐怕在技術層面(廣播/ UDP /端口等),將不利於雲」

一個衆所周知的主機」。

,並注意:對於UDP,發送者也需要知道端口,就像使用TCP一樣,唯一的區別是UDP不保持連接打開(有狀態)。

+0

我的android應用程序發送文本到我的pc應用程序,所以windows可以打印這個文本到打印機,我可以設置我想要的任何端口,唯一困擾我的是ip,因爲它可以隨時改變,並且設置一個靜態ip給pc是禁止的 –

+0

哦,所以我們有一個多對一的:所有Android應用程序w螞蟻使用(相同的)個人電腦。您必須在您的網絡中爲PC分配一個適當的名稱,即在您的DNS中。如果它是您的路由器(位於專用網絡中的防火牆後面),那麼您可以在其中進行配置。在互聯網上使用像dyndns(或繼任者)這樣的服務來引用你的(不斷變化的)公共IP。 – miw

+0

我不能訪問路由器,我的客戶不會讓我。這就是爲什麼我需要廣播消息或找出ips服務器或類似 –