C# 无法与MacOS BigSur TCP服务器建立TCP连接

C# 无法与MacOS BigSur TCP服务器建立TCP连接,c#,macos,networking,.net-core,tcplistener,C#,Macos,Networking,.net Core,Tcplistener,我正在尝试在本地连接的计算机之间建立TCP客户机-服务器连接(MacBook BigSur是正在运行的服务器,而Windows 10笔记本电脑充当客户机)。为此,我使用Visual Studio代码运行这两个应用程序,如下所示: 关于macOS: Console.WriteLine("Starting build agent..."); var listener = new TcpListener(IPAddress.Parse("127.0.0.1")

我正在尝试在本地连接的计算机之间建立TCP客户机-服务器连接(MacBook BigSur是正在运行的服务器,而Windows 10笔记本电脑充当客户机)。为此,我使用Visual Studio代码运行这两个应用程序,如下所示:

关于macOS:

Console.WriteLine("Starting build agent...");

var listener = new TcpListener(IPAddress.Parse("127.0.0.1"), 12345);
Console.WriteLine("Build agent Started ");
listener.Start();

while (true)
{
    var fileName = $"s-{DateTime.Now.Ticks}.tar.gz";
    using (var client = listener.AcceptTcpClient())
    using (var stream = client.GetStream())
    using (var output = File.Create(fileName))
    {
        Console.WriteLine("Client connected. Starting to receive the file...");

        // read the file in chunks of 1KB
        var buffer = new byte[1024];
        int bytesRead;
        while ((bytesRead = stream.Read(buffer, 0, buffer.Length)) > 0)
        {
            output.Write(buffer, 0, bytesRead);
        }

        Console.WriteLine("Client connected. File received successfuly.");

        Console.WriteLine(Execute($"tar -xvf '{fileName}'"));
    }

}
在Windows上:

    var client = new TcpClient("192.168.0.109", 12345);
    Byte[] data = File.ReadAllBytes(@"D:\shared\file.tar.gz");
    NetworkStream stream = client.GetStream();
    stream.Write(data, 0, data.Length);
    Console.WriteLine("data sent.");
但是,当Windows客户端尝试建立连接时,它无法说:

System.Net.Internals.SocketExceptionFactory.ExtendedSocketException: 'No connection could be made because the target machine actively refused it. 192.168.0.109:12345'

请注意,在运行服务器后,我可以通过在终端中使用
sudolsof-I:123456
检查它,看到Visual Studio正在使用端口12345。此外,我的Mac设备正在使用端口
192.168.0.109
,防火墙被禁用,我可以使用Windows命令提示符ping它。

127.0.0.1
是本地主机,这意味着根据定义,服务器只能在同一主机上访问


如果你想让服务器监听所有接口,不要指定
IPAddress.Any
分别
IPAddress.IPv6Any
或使用0.0.0.0.

我不知道C#,但不会
新的TcpListener(IPAddress.Loopback,12345)
只监听环回地址,不是192.168.0.109?谢谢@GordonDavisson这是一个复制粘贴错误。实际上,我正在使用侦听本地主机地址的
IPAddress.Parse(“127.0.0.1”)
,我更新了问题的详细信息。127.0.0.1是本地主机,这意味着根据定义,服务器只能在同一主机上访问。如果您希望服务器侦听所有接口,请不要指定IP地址或使用
0.0.0.0
@Robert,请发布一个答案,将其标记为有效