【发布时间】:2019-11-12 23:11:20
【问题描述】:
我有一个在许多私人机器上运行良好的客户端/服务器程序。但是,一旦我将服务器安装在 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 引用。
【问题讨论】:
-
你从哪里得到“52.56.192.252”?我的猜测是这是您私人机器上的有效 IP 地址,但不是托管环境中的有效 IP 地址。您只能绑定到分配给您的网络接口的地址。也许你应该绑定到
IPAddress.Any(见this answer) -
我从 lightsail 获得了静态 ip,我需要一个静态 ip 来监听,这样我就可以给客户端一个静态地址,这就是这个服务器的全部原因。我现在看看附加的链接。谢谢!
标签: c# amazon-web-services networking network-programming server-side