2011-10-20 24 views
1

我想寫一個基本的應用程序,將讀取端口的數據。這裏是我的代碼:如何獲得使用TcpClient進行連接的基本應用程序?

static void Main(string[] args) 
{ 
    int port = 5600; 
    string server = "MyDevLaptopName"; 
    TcpClient tcpClient = new TcpClient(); 
    tcpClient.Connect(server, port); 

    NetworkStream stream = tcpClient.GetStream(); 
    byte[] data = new byte[256]; 
    stream.Read(data, 0, data.Length); 

    Console.ReadLine(); 
} 

當我運行應用程序上面我上tcpClient.Connect命令此錯誤:

連接嘗試失敗,因爲連接的方沒有正確一段時間後響應,或已建立的連接失敗,因爲連接的主機未能響應10.90.91.19:5600

我不知道爲什麼我的電腦將不響應(我是全新的TCP端口和這樣)。

是否有不同的方式,我需要設置它來從TCP端口讀取數據?

事情我已經檢查:

  • Windows防火牆將徹底關閉。
  • 錯誤中列出的IP地址是我的開發機器(我試圖連接的機器)的內部IP地址。
  • 我確實有Symantec Endpoint Protection,但它受組策略控制,並且對我而言很難關閉(但如果需要,我可以執行此操作)。

更新:
有是應該被髮送TCP數據到該端口的主框架的服務器。我不控制該機器/服務器或它發送數據的方法。我只是想讀取發送到端口的數據。

更新II:
主框架實際上是將數據發送到我公司的虛擬機。然後,我使用發現here的技術將TCP流量重定向到我機器上的相同端口(我希望我可以讀取它)。

更新III:
大型機是客戶端,我需要的是服務器!一旦我意識到我有事可做。

+2

您用於在端口5600上設置」服務器「(即等待和監聽連接的一方)的代碼在哪裏? ? – Jon

+0

什麼樣的服務器正在偵聽該端口?您可以使用它從另一個客戶端嗎? – svick

+0

@Vaccano - 您還沒有發佈足夠的信息,您需要弄清楚您無法連接到您的服務器應用程序的原因。沒有服務器應用程序,那麼TCP就是你想要使用的錯誤的網絡連接類型 –

回答

2

我會嘗試使用另一個端口號,您是否也在控制服務器?如果是這樣嘗試按照下列步驟操作:

C# Tutorial - Simple Threaded TCP Server

你會看到那裏,你可以這樣聽:

namespace TCPServerTutorial 
{ 
    class Server 
    { 
    private TcpListener tcpListener; 
    private Thread listenThread; 

    public Server() 
    { 
     this.tcpListener = new TcpListener(IPAddress.Any, 3000); 
     this.listenThread = new Thread(new ThreadStart(ListenForClients)); 
     this.listenThread.Start(); 
    } 
    } 
} 

,你可以用這種方式進行連接:

TcpClient client = new TcpClient(); 

IPEndPoint serverEndPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), 3000); 

client.Connect(serverEndPoint); 

NetworkStream clientStream = client.GetStream(); 

ASCIIEncoding encoder = new ASCIIEncoding(); 
byte[] buffer = encoder.GetBytes("Hello Server!"); 

clientStream.Write(buffer, 0 , buffer.Length); 
clientStream.Flush(); 

它似乎是微不足道的,但它是,但端口號是不是一個細節,因爲一些端口不可用或防火牆阻止或因此...

+0

我可以讓服務器使用不同的端口(儘管我不直接控制它)。我更新了我的問題,以指出如何設置服務器。 – Vaccano

+0

也許我需要編碼的是服務器?也許我的大型機的行爲像一個客戶端,我需要傾聽它...我會嘗試你的服務器代碼,看看它是否工作。 – Vaccano

+1

我對服務器vs客戶端感到困惑(正如我所說我是一個新的TCP通信)。我需要成爲服務器,並且大型機將數據作爲客戶端發送給我。一旦我使用了你給我製作服務器的鏈接,它就開始工作了。謝謝! – Vaccano

0

您的代碼是「客戶端」。「您需要在另一臺正在監聽傳入連接的計算機上運行的」服務器「

+0

我更新了我的問題,以表明我的服務器是如何設置的。 – Vaccano

相關問題