2012-02-11 8 views
1

私は、TCP/IP経由でポート上で動作しているアプリケーションに対して「リッスン」するプログラムを作成しようとしています。ソケットとポートの混乱

ブラウザでlocalhost:30003を指定すると、アプリケーションからの出力ストリームが画面に表示されます。ブラウザがポートに正常に「リッスン」しているように見えます。

ここで何が起こっているか私のブラウザはアプリケーションをポーリングしているのですか、またはブラウザが受け取ったTCPデータをアプリケーションがプッシュしていますか?

このデータを取得するかどうかはわかりませんが、クライアントまたはサーバーインスタンスを作成する必要があります。

+0

必要なクライアントインスタンスです(ポート30003に接続する場合)。 –

+0

'[java]'タグを削除しました。実際には関係ありません。 – skaffman

答えて

2

実際に何が起こっているかを知る最良の方法の1つは、Wiresharkを起動してTCPストリームに従うことです。

http://www.wireshark.org/

代わりにあなただけのテキスト、およびネットワーキングの詳細のどれも気にならば、あなたはTCPの月のようなものを使用することができます。あなたの質問では限られた情報に基づいて

http://ws.apache.org/commons/tcpmon/download.cgi

、最も可能性が高い事は、ブラウザがTCP接続を行うことで、あなたは不正な形式のレスポンスを送り返します。ブラウザーはあなたが壊れたサイトであるとみなし、調整するのが最善です。あなたが正しいhttpヘッダーを送信していない場合は、他に何をするかを知っていません。おそらくは、画面にテキストを置くだけです。詳細を知るために

ベストな方法は、ローカルホストにブラウザを指差すのwiresharkまたは

0

tcpmonのである:30003は、ローカルホスト上のポート30003にそれが開いている接続が発生して要求するために、「/ GET」の文字列を送信しますウェブサイトとは何かを考えているウェブページです。接続の受信時にアプリケーションが送信するテキストは、Webサーバー上のテキストファイルの内容を受信したかのように、Webブラウザによって単純に表示されます。

0

ブラウザに "localhost:30003"と入力すると、コンピュータのポート30003をリッスンするプログラムに接続されます。 URLの接頭辞(デフォルトHTTP)は、サーバーとクライアントで使用されるプロトコルを決定します。この場合、ブラウザーはPC、サーバーに接続するクライアントです。

プログラムで同じことをしたい場合は、同じポート30003を使用してローカルホストへのソケット接続を設定できます。プログラムがクライアントになります。プログラムによっては(何も言及していないが)、より多くのプロトコルオプションがあり、プログラムでプロトコルを処理する必要があります。

代わりにtelnetを使用してプログラムに接続することもできますが、使用可能なプロトコルによって異なります。