UDP 服务器无法从家外访问
UDP server not reachable from outside home
我根据this example做了一个小型的UDP服务器。
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class SimpleUdpSrvr
{
public static void Main()
{
int recv;
byte[] data = new byte[1024];
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 9050);
Socket newsock = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
newsock.Bind(ipep);
Console.WriteLine("Waiting for a client...");
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint Remote = (EndPoint)(sender);
recv = newsock.ReceiveFrom(data, ref Remote);
Console.WriteLine("Message received from {0}:", Remote.ToString());
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
string welcome = "Welcome to my test server";
data = Encoding.ASCII.GetBytes(welcome);
newsock.SendTo(data, data.Length, SocketFlags.None, Remote);
while(true)
{
data = new byte[1024];
recv = newsock.ReceiveFrom(data, ref Remote);
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
newsock.SendTo(data, recv, SocketFlags.None, Remote);
}
}
}
- 当我尝试从我的本地网络访问它时,它工作正常。
- 然后我在我的防火墙中添加了一个例外,以允许端口 9050 通过防火墙。
- 我还通过我的 Netgear 路由器转发了端口 9050。
- 但是,我无法从外部访问 UDP 服务器,当我启动 UDP 服务器并通过 this port checker website 检查端口时,端口始终显示为关闭。
- 我还有另外两个端口为较旧的在线游戏打开,端口转发对它们来说效果很好。
- 也尝试过将端口更改为不同的端口号但没有成功。
对于我做错的任何帮助,将不胜感激。
好的,事实证明步骤是正确的。
消息实际上到达了服务器,只有上面的端口检查器网站仍然显示连接已关闭。
我根据this example做了一个小型的UDP服务器。
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
public class SimpleUdpSrvr
{
public static void Main()
{
int recv;
byte[] data = new byte[1024];
IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 9050);
Socket newsock = new Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
newsock.Bind(ipep);
Console.WriteLine("Waiting for a client...");
IPEndPoint sender = new IPEndPoint(IPAddress.Any, 0);
EndPoint Remote = (EndPoint)(sender);
recv = newsock.ReceiveFrom(data, ref Remote);
Console.WriteLine("Message received from {0}:", Remote.ToString());
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
string welcome = "Welcome to my test server";
data = Encoding.ASCII.GetBytes(welcome);
newsock.SendTo(data, data.Length, SocketFlags.None, Remote);
while(true)
{
data = new byte[1024];
recv = newsock.ReceiveFrom(data, ref Remote);
Console.WriteLine(Encoding.ASCII.GetString(data, 0, recv));
newsock.SendTo(data, recv, SocketFlags.None, Remote);
}
}
}
- 当我尝试从我的本地网络访问它时,它工作正常。
- 然后我在我的防火墙中添加了一个例外,以允许端口 9050 通过防火墙。
- 我还通过我的 Netgear 路由器转发了端口 9050。
- 但是,我无法从外部访问 UDP 服务器,当我启动 UDP 服务器并通过 this port checker website 检查端口时,端口始终显示为关闭。
- 我还有另外两个端口为较旧的在线游戏打开,端口转发对它们来说效果很好。
- 也尝试过将端口更改为不同的端口号但没有成功。
对于我做错的任何帮助,将不胜感激。
好的,事实证明步骤是正确的。 消息实际上到达了服务器,只有上面的端口检查器网站仍然显示连接已关闭。