在一個執行緒中執行此操作時出現例外:
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));
我知道我不能在同一個埠上創建兩個套接字,但我想要一個東西,另一個接收。
我想要實作的是本地 C# 和 Python 程式之間的行程間通信。我選擇了套接字,因為管道在 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
我目前還不知道資料傳輸
uj5u.com熱心網友回復:
您使用了錯誤的建構式。
TcpClient(IPEndPoint)
初始化 TcpClient 類的新實體并將其系結到指定的本地端點。
你可能想要的是這樣的:
TcpClient(String, Int32)
初始化 TcpClient 類的新實體并連接到指定主機上的指定埠。
請參閱TcpClient 建構式
一些知識:客戶端也需要一個空閑埠。通常它會系結到一個隨機的空閑埠。對于本地連接,需要兩個套接字 - 一個用于客戶端,一個用于服務器。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/408708.html
標籤:
上一篇:告訴用戶只按
下一篇:啟動新實體時如何獲取ID行程?
