2016-04-01 8 views
0

私はJavaソケットプログラミングの新人です。私はNIOソケットを使用しようとします。私はクライアントとサーバー側でいくつかのコードを実行します。私はそれぞれ別々に使うことができます。しかし、私は両方のメインで使用すると、ちょうど最初に開始されます。メインとクライアントの両方を定義する

public static void main(String[] args) { 
NioSocketServer server = new NioSocketServer(); 
NioSocketClient client = new NioSocketClient(); 
+0

サーバーとクライアントの両方を1つの機能として持つことは何ですか? とポイントがある場合は、これを行うことはできません、クライアントとサーバーは少なくとも異なるスレッドにする必要があります! –

+0

OK、私は、他の2台のマシン(現在は通信中)の間に挿入されるモジュールを書くつもりです。クライアント側のサーバーロールを再生したいのと同時に、サーバー側のクライアントロールすでにネットワーク。サーバーからメッセージを受け取ります。私はそれにいくつかの変更を行い、それ以降はクライアント – APNezh

+0

に送信します。最初の処理を行うためにServerSocketを作成します。したがって、最初のマシンが接続すると、 ServerSocketとそのソケットの中に別のSocketを開いて2番目のマシンに情報を送信しますが、2番目のマシンには別のServerSocketがあります –

答えて

1

あなたは(あなたが必要として、あるいはNioSocketServer)のServerSocketを作成する必要があります:私はそれはそれは私がこの問題を管理することができますどのように二これを行うに論理的であると場合は、最初のかを知りたい

ServerSocket server = new ServerSocket(8080); 
Socket client = server.accept(); 
// get data from client 
// do your processing here and then 
// make your reponse into a String msg 
Socket secondMachine = new Socket(secondMachineAddress, secondMachinePort); 
secondMachine.getOutputStream().write(msg.getBytes()); // something like this! 
secondMachine.getOutputStream().flush(); 

もちろん、コードは単なるスキーマであり、それがどのように行われたか、それが動作しない(またはコンパイルされる)という考えを与えるだけです。

+0

NIOでは新しいAsynchronousSocketChannel AsynchronousServerSocketChannelでは、それぞれに別々のCompletionHandlerを定義する必要があります。したがって、簡単に定義することはできません。 – APNezh

+0

あなたはあなたの質問の一部としてこれを言及しなかったので、どうすればわかるでしょうか? –

関連する問題