这是我的服务器
在互联网上使用多个不同的端口检查工具时,我在服务器上获得连接,证明我的端口已打开
http://www.infobyip.com/tcpportchecker.php
http://www.yougetsignal.com/tools/open-ports/
static void Main(string[] args)
{
IPHostEntry ipHostInfo = Dns.Resolve(Dns.GetHostName());
IPAddress ipAddress = ipHostInfo.AddressList[0];
IPEndPoint localEndPoint = new IPEndPoint(IPAddress.Any, 10897);
Console.WriteLine("Server Start");
Socket listener = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
listener.Bind(localEndPoint);
listener.Listen(10);
while (true)
{
Console.WriteLine("Waiting for a connection...");
Socket handler = listener.Accept();
Console.WriteLine(handler.RemoteEndPoint);
handler.Shutdown(SocketShutdown.Both);
handler.Close();
}
}
这是我的客户代码
static void Main(string[] args)
{
IPEndPoint ip = new IPEndPoint(IPAddress.Parse("MY IP HERE"), 10897);
Socket server = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
server.Connect(ip);
}
我每次都会收到此错误,我已尝试使用System.Net.Sockets.TcpClient和套接字从客户端进行多次不同的尝试,并且每当我得到连接被拒绝时,由于我的服务器收到连接,因此我的客户端似乎有些问题来自港口跳棋
我已经阅读了许多其他套接字主题,但所有问题都与服务器而不是客户端有关,我不知道有什么问题可以帮助我吗?
编辑: 我可以通过localhost(127.0.0.1)连接,但不能从我的公共IP
连接答案 0 :(得分:0)
代码工作正常(服务器的前两行什么都不做)。您有防火墙或路由问题。
答案 1 :(得分:0)
问题似乎是我的路由器有一些设置使得它不能接受外部ip的内部连接,我让我的朋友运行客户端代码并且连接正常
答案 2 :(得分:0)
它与Windows防火墙例外有关。在第一次运行时,应该提示您允许连接。如果您第一次允许它在防火墙中创建例外。也许你否认了。还可以尝试通过app.manifest
为您的应用程序提升所需的权限答案 3 :(得分:0)
这似乎是端口转发/路由问题。使用Port checker
检查转发的端口是否可访问