[英]Connect To Azure Web Job from Client over Hybrid Connection
我有一個內部服務器(mockhospital1),並且在應用程序服務計划中有一個Azure Web應用程序。
我已經從此Azure Web應用程序創建了一個混合連接以鏈接服務器A,並且我在服務器A上下載了HCM並在其中添加了連接(所有連接均正常工作)。
我能夠在ockhospital1上打開偵聽器套接字(使用ac#控制台應用程序):
Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
listener.Bind(new IPEndPoint(IPAddress.Any, 2113));
listener.Listen(100);
然后,我在Azure Web App中創建了一個Web作業,該作業通過HC發送到此套接字:
IPHostEntry ipHost = Dns.Resolve("mockhospital1");
IPAddress ipAddress = ipHost.AddressList[0];
IPEndPoint ipEndpoint = new IPEndPoint(ipAddress, 2113);
Socket sender = new Socket(System.Net.Sockets.AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sender.Connect(ipEndpoint);
這很好。
現在,我嘗試以相反的方式進行連接(啟動從嘲笑者1發送到Azure的發送)。
我要實現的目標是通過端口2113上的同一HC將數據從mockhospital1直接發送到我在Azure WebJob中創建的偵聽器。 我正在努力尋找一種方法來做到這一點。 我不確定如何設置發送套接字。
這是我在Azure WebJob上擁有的(只需在正確的端口上設置偵聽器-2113):
Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
listener.Bind(new IPEndPoint(IPAddress.Any, 2113));
listener.Listen(100);
我不確定如何連接到此以從模仿hospital1發送。 我嘗試了以下代碼(我想我真的需要知道IP_HOST_NAME應該是什么):
byte[] receivedBytes = new byte[1024];
IPHostEntry ipHost = Dns.Resolve(IP_HOST_NAME);
IPAddress ipAddress = ipHost.AddressList[0];
IPEndPoint ipEndpoint = new IPEndPoint(ipAddress, 2113);
Socket sender = new Socket(System.Net.Sockets.AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
sender.Connect(ipEndpoint);
我想知道是否有人知道我如何實現自己的目標,或者我是否以錯誤的方式解決了這個問題。
從Azure Web App進行網絡訪問方面存在多種限制。
可以通過Internet訪問應用程序的唯一方法是通過已公開的HTTP(80)和HTTPs(443)TCP端口 ,應用程序可能無法在其他端口上偵聽來自Internet的數據包。
但是,應用程序可以創建一個套接字,該套接字可以偵聽來自沙箱中的連接。 例如,同一應用程序中的兩個進程可以通過TCP套接字相互通信; 從沙箱外部傳入的連接嘗試(即使它們位於同一台計算機上)將失敗。
有關更多詳細信息,請參閱本文 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.