C# · 12月 26, 2021

c# – 无法从远程计算机连接

我有一些问题,我不能在家检查它是否工作.
这是代码 using System;using System.Net;using System.Net.sockets;using System.Threading;using System.IO;using System.Net.Security;class Program{ private static IPAddress ipAddress = IPAddress.Parse(“127.0.0.1”); private static int port = 6000; private static string data = null; static void Main(string[] args) { Thread thread = new Thread(new ThreadStart(receiveThread)); thread.Start(); Console.ReadKey(); } public static void receiveThread() { while (true) { TcpListener tcpListener = new TcpListener(ipAddress,port); tcpListener.Start(); Console.WriteLine(“Waiting for connection…”); TcpClient tcpClient = tcpListener.AcceptTcpClient(); Console.WriteLine(“Connected with {0}”,tcpClient.Client.RemoteEndPoint); while (!(tcpClient.Client.Poll(20,SelectMode.SelectRead))) { NetworkStream networkStream = tcpClient.GetStream(); StreamReader streamReader = new StreamReader(networkStream); data = streamReader.ReadLine(); if(data != null) Console.WriteLine(“Received message: {0}”,data); } Console.WriteLine(“Dissconnected…\n”); tcpListener.Stop(); } }}

我有一个简单的程序连接到这个,然后发送一个包含数据的字符串.它在localhost上工作正常,但是当我尝试连接不同的计算机时出现问题.

我甚至关闭了我的PC和路由器上的防火墙,就像我在朋友的笔记本电脑上做的那样.每次我尝试连接时,他的计算机都拒绝连接.也许我做错了什么?

当然,ipAddress现在是一个本地地址,因为它目前只与它一起工作.有什么建议吗?

解决方法 你需要将它设置为接受来自任何IP的连接,有一个IPAddress重载函数: System.Net.IPAddress.Any

使用它代替127.0.0.1,它将解决您的问题.