這與c#套接字有關。 我正在開發套接字程序。但是我的軟件有一個問題。 我無法連接到通過他們的本地網絡連接到互聯網的電腦。但我可以連接到單獨使用互聯網的電腦。更具描述性, 考慮到5臺計算機通過使用1個IP地址的調制解調器連接互聯網。當我嘗試訪問這些計算機之一時,API通過其IP地址連接到調制解調器。但沒有迴應。由於調制解調器不響應計算機請求。平均而言,我的API不僅需要調制解調器才能連接電腦。並且拋出一個SocketException。我可以對這個問題做些什麼?如何通過IP地址連接電腦
2
A
回答
3
您遇到的問題是由NAT造成的。這由允許多個客戶端通過一個公共IP地址聯機的路由器使用。路由器後面的客戶端都不會「知道」或「看到」這個,但它限制了連接。
客戶端可以啓動到外部的連接,但其他方式基本上是不可能的。除非使用port forwarding,否則將一個或多個端口轉發到路由器後面的客戶端。這樣,連接可以從外部啓動。
然而,這需要在客戶端進行配置,所以首選的方法是讓您的客戶端連接到您的服務器,因爲這將始終可能(忽略防火牆)。
*:還有一種解決方法,您讓客戶端連接到您的服務器,然後將連接信息傳遞給另一個客戶端,以便這些客戶端可以相互通信。例如,這被稱爲'nat punching',並被洪流客戶端使用。
1
,你可以嘗試這樣的事情.....
服務器端代碼
namespace Consoleserver
{
class Program
{
static void Main(string[] args)
{
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint localEndPoint = new IPEndPoint(ipAddress, 11000);
Socket listener = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
try
{
listener.Bind(localEndPoint);
listener.Listen(10);
while (true)
{
Console.WriteLine("Waiting for a connection...");
Socket handler = listener.Accept();
Console.WriteLine("connected");
}
}
catch { Console.WriteLine("error");
}
}
}
客戶端代碼:
namespace consoleclient
{
class Program
{
static void Main(string[] args)
{
try
{
IPHostEntry ipHostInfo = Dns.Resolve("59.178.131.180");
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint remoteEP = new IPEndPoint(ipAddress, 11000);
Socket sender = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.Tcp);
try
{
sender.Connect(remoteEP);
Console.WriteLine("Socket connected <strong class="highlight">to</strong> {0}",
sender.RemoteEndPoint.ToString());
}
catch (ArgumentNullException ane)
{
Console.WriteLine("ArgumentNullException : {0}", ane.ToString());
Console.Read();
}
catch (SocketException se)
{
Console.WriteLine("SocketException : {0}", se.ToString());
Console.Read();
}
catch (Exception e)
{
Console.WriteLine("Unexpected exception : {0}", e.ToString());
Console.Read();
}
}
catch
{ Console.WriteLine("could not <strong class="highlight">connect</strong> A"); }
}
}
}
我希望它會幫助你
相關問題
- 1. 如何使用IP地址連接到電腦?
- 2. 如何通過套接字將android連接到本地電腦
- 3. 兩臺電腦如何通過NAT連接到相同的外部地址?
- 4. 如何通過IP地址連接到設備Objective-C
- 5. 如何連接到本地IP地址
- 6. 如何通過傳入連接將手機與電腦連接?
- 7. Android平板電腦IP地址
- 8. 通過IP地址
- 9. 如何使用IP地址(通過InetAddress)通過JDBC與MySQL建立連接?
- 10. 通過SNMP4J連接兩臺電腦
- 11. 使用bluecove通過藍牙將電腦連接到電腦
- 12. 爲什麼'外地址'不是外部電腦的IP地址?
- 13. IP地址是否連接
- 14. Java連接到IP地址
- 15. 連接兩臺電腦的IP地址發送消息(不在內部網絡)
- 16. 如何在我自己的電腦IP地址192.168.x.x
- 17. 如何獲取我的電腦外部IP地址?
- 18. 如何將數據通過IP地址
- 19. 使用CSV文件通過IP地址從網絡拉電腦名稱
- 20. 通過IP地址不能正常工作的Socket.io連接
- 21. WMI - 無法通過IP地址連接到某些計算機
- 22. mysqli通過IP地址連接但不使用主機名
- 23. 通過局域網連接websocket服務器IP地址
- 24. 無法通過IP地址連接ASP.NET開發服務器(VS2010)
- 25. 查找通過代理連接的客戶端的IP地址
- 26. 無法通過IP地址連接到MySQL
- 27. 如何通過華爲C8812連接電腦?
- 28. 通過電纜/電線連接Android平板電腦
- 29. IP地址將不會連接到相同的IP地址
- 30. C - 如何獲取連接到我的電腦的所有IP