2010-02-17 50 views
1

爲什麼下面的代碼不能在C#中工作?在C#中設置TcpClient本地端點的問題#

var c1 = new TcpClient(new IPEndPoint(IPAddress.Any, 8787)); 
var c2 = new TcpClient(new IPEndPoint(IPAddress.Any, 8788)); 
c1.Connect("localhost", 8788); 

我得到了「因目標機器主動拒絕而無法建立連接」。所以,TcpClient構造函數看起來並沒有綁定端口,但我嘗試了Socket.Bind()函數,但沒有運氣。

+0

您是否有意在端口8788上運行「服務器」? – ziya 2010-02-17 22:28:15

+0

它更像是點對點的東西,所以它們都不是服務器。由於該程序的性質,我需要指定本地端口(不能只將它設置爲任何並隨機化)。 – Nayruden 2010-02-17 22:33:57

回答

4

兩個TcpClient的不能相互交談。您需要一個TcpClient和一個TcpListener

+0

TcpListener:http://msdn.microsoft.com/en-us/library/system.net.sockets.tcplistener.aspx – ziya 2010-02-17 22:29:49

+0

有沒有更簡單的方法?我不需要接受更多的連接。 TcpClient是否無法響應SYN? – Nayruden 2010-02-17 22:32:32

+0

@Nayruden,不,「TcpClient」不能接受連接。爲了溝通,你需要一個客戶端和一個服務器。客戶端連接到服務器。如果你真的在談論在同一臺計算機上進行通信,進程間通信,那麼在如何執行IPC方面有很多選擇,但TCP仍然非常普遍,也是最簡單的方法之一。 – 2010-02-17 22:47:38

0

問題是你沒有聽取連接。你必須使用TcpListener或類似的。

0

我同意山姆。你可以找到一個例子here