import java.io.*; import java.net.*; public class echoServer { public static void main(String args[]) { // ソケットや入出力用のストリームの宣言 ServerSocket echoServer = null; Socket clientSocket = null; String line; BufferedReader is; PrintStream os; // ポート9999番を開く try { //待ち受けポートを指定して新しいサーバソケットを生成しています。 echoServer = new ServerSocket(9999); System.out.println("EchoServerが起動しました(port=" + echoServer.getLocalPort() + ")"); //acceptメソッドを呼び出し、クライアントからの接続待機状態に入ります。クライアントからの接続要求があると、socketにはクライアントとの通信に利用できるSocketのインスタンスが代入されます。 clientSocket = echoServer.accept(); System.out.println("接続されました "+ clientSocket.getRemoteSocketAddress() ); is = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); os = new PrintStream(clientSocket.getOutputStream()); // クライアントからのメッセージを待ち、受け取ったメッセージをそのまま返す while ( (line = is.readLine()) != null ) { System.out.println("受信: " + line); os.println(line); System.out.println("送信: " + line); } } catch (IOException e) { System.out.println(e); } } }
クライアント側プログラム
import java.io.*; import java.net.*; public class echoClient { public static void main(String[] args) { // ソケットや入出力用のストリームの宣言 Socket echoSocket = null; DataOutputStream os = null; BufferedReader is = null; // ポート9999番を開く try { echoSocket = new Socket("localhost", 9999); os = new DataOutputStream(echoSocket.getOutputStream()); is = new BufferedReader(new InputStreamReader(echoSocket.getInputStream())); } catch (UnknownHostException e) { System.err.println("Don't know about host: localhost"); } catch (IOException e) { System.err.println("Couldn't get I/O for the connection to: localhost"); } // サーバーにメッセージを送る if (echoSocket != null && os != null && is != null) { try { // メッセージを送ります os.writeBytes("HELLO\n"); // サーバーからのメッセージを受け取り画面に表示します String responseLine; if ((responseLine = is.readLine()) != null) { System.out.println("Server: " + responseLine); } // 開いたソケットなどをクローズ os.close(); is.close(); echoSocket.close(); } catch (UnknownHostException e) { System.err.println("Trying to connect to unknown host: " + e); } catch (IOException e) { System.err.println("IOException: " + e); } } } }
0 件のコメント:
コメントを投稿