2015-04-03 85 views
0

目前我正在編寫一個C#中的Windows 7小程序,它可以通過GCM(Google Cloud Messeging)向我的Android智能手機發送通知。爲此,我通過POST將一些數據發送到我的WebServer,然後通過GCM將數據推送到我的智能手機。這種方式很好,但我也想從智能手機發送一些數據到我的程序中。通知Web服務器的Windows程序

我現在的問題是,我不知道如何從我的WebServer中通知我的C#程序。我想過這樣的事情:

Smartphone -> send Data to WebServer -> notify C# program 

我不想使用輪詢和GCM客戶端只適用於Android智能手機。那麼你認爲通知我的程序有哪些數據可用的最佳方法是什麼?我讀了一些關於HTTP流的內容,但我不知道它是如何工作的,不知道我是否可以用C#實現它。還是你有其他的想法,我可以如何解決這個問題?

+0

閱讀關於Web服務器 - >客戶端部分的SignalR – DrKoch 2015-04-03 12:11:05

回答

1

SignalR是一個很好的吶喊,但你也應該理解套接字編程的基本概念。 C#使打開套接字和偵聽消息變得非常簡單。 Microsoft網站向您展示如何同步處理請求here

Http只是一個消息協議。一旦你瞭解協議閱讀的消息並不難。請記住,如果您收到來自服務器的消息,它將需要知道您的IP地址等。

+0

謝謝你的這看起來真的很好。但我還有一個問題:你說服務器需要知道我的IP等等。如果我從我的程序發送請求到服務器,服務器知道我的IP地址,等等。假設我的程序在開始時「註冊」了自己(向服務器發送請求),然後我可以將信息存儲在服務器上,稍後如果我想與服務器上的程序進行通信,可以使用它們嗎?我必須在路由器上打開更多端口才能完成這項工作嗎? – Cilenco 2015-04-03 17:13:19

+0

是的,你可以在服務器上註冊IP。確保你在考慮安全等等。還要重新考慮投票。如果你的http數據很少,那麼每隔30秒輪詢一次可能會很好。 Web瀏覽器可以很好地發送大量請求,並且Web服務器可以處理這些負載。這將使您的生活變得更加簡單和安全,因爲您並未將機器聯繫信息永久存儲在服務器上。 – Luthervd 2015-04-03 17:19:28

相關問題