我正在使用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