2016-10-14 4 views
0

は、私はそのサーバーにクライアントを接続し、完全に通信するための管理:Java:TCPソケット、サーバーが最初に要求を行うことはできますか?この図に続き

TCP Diagram

質問がある:それは、サーバが最初の最初の要求を行うようにすることは可能ですか? 「はい」の場合、サーバーの呼び出しを待機し続けるようにクライアントを構成するにはどうすればよいですか。

私はこの(クライアント側)でした:

Socket serverSocket = new Socket(Network.serverInetAddress, Network.SERVICE_PORT); 

while (!Thread.currentThread().isInterrupted()) { 
    ObjectInputStream objectInputStream = new ObjectInputStream(new BufferedInputStream(serverSocket.getInputStream())); 
    MessageContent messageContent = (MessageContent) objectInputStream.readObject(); 

    Network.processMessage(messageContent); 
} 

serverSocket.close(); 

をしかし、私は私のクライアントまたはサーバーのログにエラーを見ていないものの、クライアントは、サーバーのメッセージを受信しませんでした。

私はこれをどのように解決し、サーバーから接続されたすべてのクライアントにメッセージを「ブロードキャスト」できますか?ありがとうございました! :)

+0

リクエスト?データ転送または接続が必要ですか?転送の場合、クライアントサイドで 'socket.read(...)'を実行するだけで、クライアント上で 'ServerSocket'は必要ありません。サーバが接続を開始するようにしたい場合、それはもうサーバではなく、そのクライアントです:) –

+0

@VictorSorokinありがとう、ソケットのread()メソッドが見つかりませんでした。正確な名前は何ですか? – Denis

+1

'socket.getInputStream()。read(...)' –

答えて

2

はい、可能です。サーバーのメッセージを待つ必要のあるクライアントを指定する必要があります(これは、コマンドをブロックしているため、ソケット上のコマンドを読み取ることによって実行できます)。 サーバーでは、クライアント接続が受け入れられた後にwiteデータのみが必要です。

関連する問題