gpt4 book ai didi

c# - 在不同线程、相同进程上连接到 TcpListener

转载 作者:太空宇宙 更新时间:2023-11-03 11:42:45 24 4
gpt4 key购买 nike

我正在尝试对一些通信进行单元测试。在 C# 中通过 TCP 编码。我创建了一个支持 TcpListener 的快速线程。每次 TcpClient 尝试连接时,我都会收到“通常只允许使用每个套接字地址(协议(protocol)/网络地址/端口)一次”异常。您不能在同一进程中托管并连接到同一端口吗?

    [Test]
public void Foo()
{
Thread listenerThread = new Thread(TcpListenerThread);

listenerThread.Start();

Thread.Sleep(5000);

TcpClient client = new TcpClient(new IPEndPoint(IPAddress.Loopback, 1234));
}

private void TcpListenerThread()
{
TcpListener listener = new TcpListener(IPAddress.Any, 1234);
listener.Start();
TcpClient socket = listener.AcceptTcpClient();
StreamWriter writer = new StreamWriter(socket.GetStream());

writer.Write(File.ReadAllBytes("../../random file.txt"));

}

最佳答案

您使用了错误的 TcpClient 构造函数- 这个将客户端绑定(bind)到本地地址和端口,因此您最终会遇到监听器和客户端都试图获取 127.0.0.1:1234。使用 TcpClient( String, int )构造函数。

关于c# - 在不同线程、相同进程上连接到 TcpListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4319660/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com