C#: 无法连接,目标机器主动拒绝。127.0.0.1:1026
又来问TCP的问题了 :(
我已经写好了服务器端的监听程序和客户端的发送程序,但我遇到了一个错误:
System.Net.Internals.SocketExceptionFactory.ExtendedSocketException: '无法建立连接,因为目标机器主动拒绝了它。127.0.0.1:1026'
服务器的代码是用Python写的,代码如下:
def StartServer(Host, Port, Log):
ServerSocket = sockets.socket(sockets.AF_INET, sockets.SOCK_STREAM)
SererSocket.bind((Host, Port))
ServerSocket.listen(1)
Log.log(f"Listening on {Host}:{Port}")
while True:
ClientSocket, Addr = ServerSocket.accept()
Data = ClientSocket.recv(1024).decode("utf-8")
response = "data recieved"
ClientSocket.send(response.encode("utf-8"))
ClientSocket.close()
而服务器的代码是用C# (.net6.0)写的,代码如下:
public static void SendData(string serverAddress, int port)
{
TcpClient client = new(serverAddress, port);
Console.WriteLine("1");
NetworkStream stream = client.GetStream();
Console.WriteLine("2");
// Send data to server
string message = "Hello from C# client";
byte[] data = Encoding.ASCII.GetBytes(message);
stream.Write(data, 0, data.Length);
Console.WriteLine("3");
// Receive response from server
data = new byte[256];
int bytes = stream.Read(data, 0, data.Length);
string responseData = Encoding.ASCII.GetString(data, 0, bytes);
Console.WriteLine($"Received from server: {responseData}");
Console.WriteLine("4");
// Close the connection
stream.Close();
client.Close();
}
我把Python服务器绑定到了127.0.0.1:1026(就我所知,这个端口是可用的),但是在创建TCP客户端时,使用“127.0.0.1”,1026时就出现了这个错误。我尝试过关闭两边的防火墙,但还是没有解决。有没有人知道我遇到的问题是什么?
补充:我是在同一个网络连接下的不同机器上运行服务器和客户端,但我打算在后面把客户端换到不同的网络连接上。
2 个回答
0
问题在于你试图从两台不同的电脑上使用127.0.0.1进行连接。
在服务器电脑上运行 hostname
命令,然后用这个名字来连接客户端,而不是用127.0.0.1。
0
这只是我对TCP/IP不太熟悉导致的。我把客户端和服务器的绑定地址从127.0.0.1:1026改成了(我的IP地址):1026,这样就解决了问题。