我在一个线程中执行此操作时遇到异常:
var listener = new TcpListener(new IPEndPoint("127.0.0.1", 3536));
listener.Start();
System.Net.Sockets.SocketException(0x80004005(:地址已在使用
和这在另一个线程中:
var client = new TcpClient(new IPEndPoint("127.0.0.1", 3536));
我知道我不能在同一个端口上创建两个套接字,但我想要一个套接字,另一个套接字接收。
我想要实现的是LOCAL C#和Python程序之间的进程间通信。我选择了套接字,因为管道在Windows和Unix系统上的工作方式不同,我希望有可能将一个程序外包给另一台机器。
编辑:当我删除时,TCP侦听器运行完美
var client = new TcpClient(new IPEndPoint("127.0.0.1", 3536));
第二版:我有
Thread.Sleep
在我的主线程上。如果我用替换它
while (!client.Connected) client.Connect(ipEndPoint)
Console.WriteLine(client.Connected) // this reaches
我目前还不知道数据传输
您使用了错误的构造函数。
TcpClient(IPEndPoint(
初始化TcpClient类的新实例并将其绑定到指定的本地终结点。
您可能想要的是:
TcpClient(String,Int32(
初始化TcpClient类的新实例并连接到指定主机上的指定端口。
请参阅TcpClient构造函数
一些知识:客户也需要一个自由端口。通常情况下,它会绑定到一个随机的空闲端口。对于本地连接,需要两个套接字——一个用于客户端,一个用于服务器。