2014-07-05 37 views
0

我有一個使用TCP/IP將數據發送到VB.NET服務器應用程序的Flash AS3客戶端應用程序。當在單臺機器上使用loopback/localhost進行測試時,數據會通過。但是,當我將套接字的IP設置到LAN的相應計算機並分別運行每個應用程序時,就沒有數據接收。IP無法通過TCP連接LAN上的兩個套接字(AS3,VB.NET)

VB.NET - 這工作:

Public Shared localAddress As IPAddress = IPAddress.IPv6Loopback 
Public Shared port As Int32 = 8080 
Public Shared server As New TcpListener(localAddress, port) 

AS3 - 這工作:

var client : Client = new Client("localhost", 8080) 

AS3 - 這不:

var client : Client = new Client("xxx.xxx.xxx.xxx", 8080) 

我已檢查該端口是開放的(即ShieldsUp返回「隱身」)。我不知道應該使用NetConnection,還是我可以/應該設置Flash套接字策略文件 - 兩臺計算機都運行Windows。

沒有聯繫的最合理的原因是什麼?有任何想法嗎?

+0

可能相關(如果由於Flash):http://stackoverflow.com/questions/22902832/as3-socketserver-sockets-connect-but-cannot-send-data-to-server-over-lan?rq= 1 – noumenal

回答

1

你有套接字策略文件嗎? http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html

此外,設立政策文件記錄,所以你得到了什麼事情的想法:http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7ec4.html

而且,最終的(啞)點:你確定這兩臺計算機在同一網絡上,並且IP是對的(lan ip,不是公網ip)?

+0

我只有9個月的編程經驗,所以不是一個愚蠢的問題。顯然,我認爲我在其中一臺電腦上使用了公共IP(因爲這是IPConfig返回的); 134。*。*。*不受NIC和IANA的限制。由於我無法弄清楚本地IP(192. *,10. *或172. *),也許我可以嘗試使用計算機的DNS名稱。我看過你推薦的鏈接,但是我錯過了Windows的說明。看來,我將不得不安裝Cygwin,並讓它在服務計算機上運行,​​腳本才能工作(除非我使用AIR)。 – noumenal

+1

當你使用'ipconfig'時,你的本地IP地址應該是「IPv4地址」下的地址,並且形式爲'192.168 ...'。你不需要做任何特別的支持Windows;我每天都在使用閃存套接字(我們製作多人遊戲) - 一旦你有了一個xml套接字策略文件,應該很好。確保你正確加載它 - 應該是像'Security.loadPolicyFile(「xmlsocket://」+ ip +「:」+ policyFilePort);' – divillysausages

+0

對於其中一臺計算機IPConfig不會返回192.168 ...地址,但公開的(134 ...)。我希望儘量減少服務器上的內存資源。而不是安裝Cygwin,是否可以直接通過VB NET服務器應用程序發送每個xmlsocket://協議和端口843的文件? – noumenal