C# 为什么只有在工作服务器在主机域上运行时,才会在该服务器上出现异常?

C# 为什么只有在工作服务器在主机域上运行时,才会在该服务器上出现异常?,c#,amazon-web-services,networking,network-programming,server-side,C#,Amazon Web Services,Networking,Network Programming,Server Side,我有一个客户机/服务器程序,可以在许多专用机器上运行。然而,一旦我在Amazon Lightsail的主机域Windows server 2016上安装了该服务器,我就会遇到一个例外 我正在使用UDP套接字并尝试与我拥有的静态IP绑定,但遇到以下异常: System.Net.Sockets.SocketException (0x80004005): The requested address is not valid in its context at System.Net.Sockets

我有一个客户机/服务器程序,可以在许多专用机器上运行。然而,一旦我在Amazon Lightsail的主机域Windows server 2016上安装了该服务器,我就会遇到一个例外

我正在使用UDP套接字并尝试与我拥有的静态IP绑定,但遇到以下异常:

System.Net.Sockets.SocketException (0x80004005): The requested address is not valid in its context
   at System.Net.Sockets.Socket.DoBind(EndPoint endPointSnapshot, SocketAddress socketAddress)
   at System.Net.Sockets.Socket.Bind(EndPoint localEP)
   at AP_Server_Side.Program.Main(String[] args)
我尝试了许多不同的端口以及零端口

我的代码:

  Socket _reciveSocket = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
  IPAddress _localAddress = IPAddress.Parse("52.56.192.252");
  IPEndPoint _localip = new IPEndPoint(_localAddress, 0);
  Console.WriteLine("local Address : " + _localip.ToString());
  IPEndPoint _newend = new IPEndPoint(IPAddress.Any, 0);
  EndPoint _escoler = (EndPoint)_newend;

    byte[] _bufferrecived = new byte[1024];
    byte[] _sendBuffer = new byte[1024];
    int _recivefrom;
    string _msgRecived = string.Empty;
    int _userint = 1;
        try
        {

                _reciveSocket.Bind(_localip);
我怀疑代码中是否存在问题,因为正如我所说的,服务器已经过测试,并且在多台机器上运行良好


我猜是Windows或服务器设置的问题,我关闭了防火墙并尝试了入站所有UDP引用。

听起来您部署的环境也有问题。从it之声来看,lightsail旨在为只监听HTTP流量(TCP)的应用程序进行简单部署。我最好的猜测是52.56.192.252地址。任何一个或本地主机127.0.0.1都可能工作得更好。不幸的是,您不能随意绑定到地址,这取决于网络接口的IP范围

它还可能与特定lightsail实例的网络设置有关。 您可能想查看以下内容:

这也可能对你的调查有用。


此外,我还建议在进行这种低级套接字编程之前,学习更多关于网络和IP地址的知识

“52.56.192.252”是从哪里来的?我猜这是您的专用计算机上的有效IP地址,但在托管环境中不是。您只能绑定到分配给网络接口的地址。也许你应该绑定到
IPAddress。任何
(请参阅)我从lightsail获得的ip是静态ip,我需要一个静态ip来侦听,以便我可以为客户端提供一个静态地址,这就是此服务器的全部原因。我将有一个附加的链接现在看看。非常感谢。不是对你的代码的评论,如果我冒犯了你,我道歉!作为一个也经历过这一学习阶段的人,我知道让某些东西起作用很容易,但你经常会被细节和理解上的差距所困扰。令人烦恼的是,网络有很多层,因此为了有效地使用其中一层,了解其他层会有帮助。我认为问题在于,您无法绑定到该IP,或者您无法打开UDP端口,因为有特权,或者env中的lightsail被某种方式锁定。我希望AWS的支持更有用。