2011-12-21 6 views
1

Javaソケットプログラミングには2つの質問があります。これは単体のアプリケーションであり、J2SEでのみ構築されます。Javaソケットプログラミング

1)は、ポートが443

2となりますので、それはHTTPS要求されますので、/私の場合は同じポートを経由して同時に読み書きすることが可能です)1つのJavaで2つのソケット接続を作成することは可能です応用。そのうちの1つのソケットはクライアントとして動作し、他のソケットはサーバとして動作します。

私はこれに関するいくつかの資料を探していましたが、役に立つものが見つかりませんでした。

答えて

2

どちらの質問にも答えははいです。 2番目の質問では、サーバー上のアクティビティをリッスンするスレッドを作成する必要があります。あなたが読んで、一つの接続に書き込むことができるように

そしてthis tutorial

+3

は、[このPDF](http://www.buyya.com/java/Chapter13.pdf)芋も良いリソースです。 (ちょっと答えを追加するだけです):-) – Deco

4

ソケット接続を見ては、二つの方法です。それはソケットにワイヤープラグを接続するのと似ているので、名前ソケットです。

相続人は、あなたがそれを行う方法

Socket socket = new Socket("10.0.0.1", 1234); 
OutputStream os = socket.getOutputStream(); 
InputStream is socket.getInputStream(); 
new MyInputServiceThread(is).start(); 

今、あなたは、OSからの書き込みと、OSから読み取ることができます。それらが同期していないと思われる場合は、同じスレッドまたは異なるスレッドで実行できます。

では、1つのアプリケーションに任意の数のクライアントとサーバーソケットを配置できます。少なくとも理性的には。実際的な制限があります。サーバーソケットの場合、接続を受け入れて開いているソケットを通過するスレッドを生成することができます。そして、サーバーソケットはより多くの接続を受け入れる準備ができているはずです。つまり、同じポートで複数の接続を許可するには、接続を受け入れた後にブロックしないようにする必要があります。ただし、複数のサーバーソケットを複数のスレッドで開くこともできます。

相続例えばクライアントとアプリケーションのため

ServerSocket server = new ServerSocket(1234); 
while (true) { 
    Socket socket = server.accept(); 
    // Once it spawns the thread that socket connection is serviced by 
    //the thread and the   
    //server socket is ready to accept new connections. 
    new Mythread(socket).start(); 
    // above Mythread extends Thread....  
} 

制限はありません。接続したい数だけ接続します。

もう1つの注意点... httpsの場合は、証明書を受け入れる必要があります。つまり、秘密公開鍵を処理する必要があります。あなたは本当にそれをしたいですか? tomcatや他のアプリサーバーがすでにそうしているからです。これがウェブアプリになる場合は、適切に署名されたデジタル証明書について考える必要があります。イントラネットにアクセスするために使用されたブラウザでは、自己生成の自己署名証明書をインポートする必要があります。

+0

前にも述べたように、Webアプリケーションではありません。これは独立したアプリケーションになります。アプリケーションはmainメソッドを使用して開始されます。私たちのコンポーネントは関係していません。だから私は証明書について心配する必要はないと思う。 – AKV

+1

SSLを使用している場合はWebサーバーではなくても、証明書について心配する必要があります。あなたの質問から、https ??? sslを介してhttpを使用します。 –

0
  1. ポートを作成しているプログラムは、サーバープログラムです。

  2. サーバープログラムでは、クライアント要求をリスンする複数のポートを作成できます。

  3. クライアントはポートプログラムのみを作成しません。クライアントは、そのサーバーポートのサーバーにのみ要求を送信します。したがって、プログラム内の任意の数のポートは常にserver-portsです。

  4. クライアントがサーバーに要求を送信すると、サーバーは要求が場所でありサーバーがそれを読み取るバッファーメモリーを取得します。サーバはまた、サーバがクライアントに返信するのに必要なレスポンスを書き込むことができる別のバッファメモリを取得する。したがって、yesサーバーは同時に読み書きできます。

0

さらに詳しい説明が必要な方のために。ここに、Javaソケットを使って作られた簡単なゲームの例へのリンクがあります。私は、解剖して遊ぶためにいくつかのコードを持っていると便利です。

http://cs.lmu.edu/~ray/notes/javanetexamples/

関連する問題