我正在尝试对一些通信进行单元测试 . C#中的TCP代码 . 我创建了一个快速线程,它代表了一个TcpListener . 每次TcpClient尝试连接时,我都会得到“通常只允许使用每个套接字地址(协议/网络地址/端口)”异常 . 您是否可以在同一进程中托管并连接到同一端口?
[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"));
}
1 回答
您正在使用TcpClient的错误构造函数 - 这个将客户端绑定到 local address and port ,因此您最终会同时侦听器和客户端尝试抓取
127.0.0.1:1234
. 使用TcpClient( String, int )构造函数 .