[英]Local Inter-process Communication via TCP Sockets in C#
在一個線程中執行此操作時出現異常:
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));
我知道我不能在同一個端口上創建兩個 sockets,但我想要一件事,另一件事接收。
我想要實現的是本地 C# 和 Python 程序之間的進程間通信。 我選擇了 sockets 因為管道在 Windows 和 Unix 系統上的工作方式不同,我希望有可能將一個程序外包給另一台機器。
編輯:當我移除 TCP 監聽器時運行完美
var client = new TcpClient(new IPEndPoint("127.0.0.1", 3536));
Edit2:我有一個
Thread.Sleep
在我的主線程上。 如果我將其替換為
while (!client.Connected) client.Connect(ipEndPoint)
Console.WriteLine(client.Connected) // this reaches
我目前還不知道數據傳輸
您使用了錯誤的構造函數。
TcpClient(IPEndPoint)
初始化 TcpClient class 的新實例並將其綁定到指定的本地端點。
你可能想要的是這樣的:
TcpClient(字符串,Int32)
初始化 TcpClient class 的新實例並連接到指定主機上的指定端口。
一些知識:客戶端也需要一個空閑端口。 通常它會綁定到一個隨機的空閑端口。 對於本地連接,需要兩個 sockets - 一個用於客戶端,一個用於服務器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.