无法建立连接,因为目标计算机主动拒绝它,可以在localhost上工作,但不能在我的本地IP上工作

时间:2018-04-05 08:09:00

标签: c# tcpclient windows-firewall

我正在使用C#中的TCP客户端。如果我发送数据的IP是127.0.0.1,当我将数据包发送到我的服务器时,它工作正常,但当我将其更改为我的实际ipv4地址时,它会中断并给我这个错误消息:

  

无法建立连接,因为目标计算机主动拒绝它

我已经检查了netstat -a,我可以看到一个服务正在侦听端口5000(我的应用程序),我还打开了我的防火墙端口(5000-5500)。

在我必须联系系统管理员以查看其他内容是否阻止我的连接之前,我还可以采取哪些进一步的操作?

这是我的TCP客户端:

using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net.Http;
using System.Net.Sockets;
using System.Text;
using System.Threading.Tasks;

namespace TestLockedConsoleAppNet
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("Hello World");
            SystemEvents.SessionSwitch += new SessionSwitchEventHandler(SystemEvents_Locked);
            TestTCP();
            while (true) { }
        }

        static void SystemEvents_Locked(object sender, SessionSwitchEventArgs e)
        {
            if (e.Reason == SessionSwitchReason.SessionLock)
            {
                Console.WriteLine("Locked");
            }

            TestTCP();
        }

        static void TestTCP()
        {
            TcpClient client = new TcpClient("127.0.0.1", 5000); // <-- works fine. But when I change the IP to my ipv4 address, it breaks.

            Byte[] data = System.Text.Encoding.ASCII.GetBytes("Locked");

            NetworkStream stream = client.GetStream();

            stream.Write(data, 0, data.Length);

            Console.WriteLine("Sent: {0}", "Message");

            data = new Byte[256];

            String responseData = String.Empty;

            Int32 bytes = stream.Read(data, 0, data.Length);
            responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
            Console.WriteLine("Received: {0}", responseData);

            stream.Close();
            client.Close();
        }
    }
}

netstat -na | find "5000"在我收听本地IPv4时提供此功能:

  

TCP 10.146.200.78:5000 0.0.0.0:0 LISTENING

0 个答案:

没有答案