2011-10-20 2 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:
メインフレームは、実際に私の会社でVMにデータを送信しています。私はその後、hereというテクニックを使って、TCPトラフィックを自分のマシンの同じポートにリダイレクトします。

更新III:
メインフレームはクライアントであり、私はサーバーになる必要があります。私は一度私は物事が働いていることに気づいた。

+2

ポート5600で "サーバー"(つまり、接続を待機して待機するパーティー)を設定するコードはどこにありますか? ? – Jon

+0

このポートでどのような種類のサーバーが待機していますか?別のクライアントから使用できますか? – svick

+0

@Vaccano - 十分な情報を投稿していません。サーバーアプリケーションを持っていない場合は、使用したいネットワーク接続の種類が間違っています。 –

答えて

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

私はサーバ対クライアントについて混乱しました(私はTCP通信の新しい話をしました)。私はサーバーになる必要があり、メインフレームはクライアントとしてデータを送信していました。一度私はあなたが私に与えたリンクを使用して、それはすべてそれが働き始めたサーバーを作る。ありがとう! – Vaccano

0

あなたのコードは「クライアント」です。

+0

私の質問が更新され、サーバーの設定方法が示されました。 – Vaccano

関連する問題