2010-12-16 118 views
1

我正在製作客戶端/服務器應用程序,應用程序有一個位於遠程主機上的服務器應用程序和一個客戶端應用程序可能位於具有不同IP地址的不同客戶端上。 服務器應用程序將在端口80上有他的IP地址,並且它將監聽不同的客戶端請求。 此客戶端/服務器應用程序還支持實時聊天,所以.......,如果不同的客戶端位於防火牆和路由器之後,服務器是否可以通過這些防火牆和路由器向客戶端應用程序發送實時消息,然後等待他們的迴應。通過客戶端防火牆和路由器通過system.net.sockets構建客戶端/服務器應用程序

回答

0

如果端口是開放的......是的。

+0

客戶端應用程序有他的動態IP地址和端口每次都要連接到網絡。 – Massimo 2010-12-17 07:12:05

+0

客戶端應用程序有他的動態IP地址和端口每次都要連接到網絡。 我的應用程序始終在網絡上,並且修復了Ip和端口(80)open.1 當客戶端應用程序調用服務器應用程序時,它通過系統分配的IP和端口來調用它,然後服務器對其進行響應到它的IP和端口。 但是在這一點上,服務器可以在不接收其他呼叫的情況下對客戶端執行另一次發送操作? – Massimo 2010-12-17 07:22:12

0

解決此問題的一種常見方法是在服務器上放置請求,然後對其進行響應。大多數防火牆不會允許您向客戶端發送請求。所以,你向服務器發出一個異步請求,服務器不會返回,直到發送給客戶端的內容有意義。然後,在發送響應之後,請客戶端暫停對下一個服務器數據的另一個請求。

+0

非常有趣的馬特。 但是,我怎麼能做到異步請求到服務器,例如。 1)客戶端通過他的動態IP和端口(123.123.123.123:12345)連接到服務器到服務器的IP和端口(456.456.456.456:80) 2)服務器(456.456.456.456:80)響應客戶端(123.123.123.123:12345) 3)客戶端(123.123.123.123:12345)發出另一個請求,而沒有任何要求到服務器(456.456.456.456:80),然後等待響應? 這是你的意思嗎? – Massimo 2010-12-17 07:40:31

+0

如果我正確地理解你,那麼是的。客戶端必須向服務器發出請求並等待響應。服務器只在客戶端關心的事情發生時才響應,否則服務器只會保持連接打開。一旦客戶端得到響應,它會發送另一個請求,並繼續這樣的通信。 – 2010-12-17 15:31:46

+0

感謝馬特。 我正在尋找一些異步服務器套接字編程的例子,我發現這一個服務器端http://msdn.microsoft.com/en-us/library/fx6588te.aspx和同一頁的結尾有一個客戶端的例子是我的客戶端/服務器應用程序將是多客戶端。由於我是socket編程新手,你能幫助我嗎,我是否正確? 再次提前感謝。 – Massimo 2010-12-20 12:00:10