echoサーバについて

このQ&Aのポイント
  • javaで学ぶechoサーバの例外について
  • echoサーバの動作確認方法
  • echoサーバのプログラム例
回答を見る
  • ベストアンサー

echoサーバについて

javaを勉強しています。 echoサーバをつかったサンプルがあり、vinelinux上でコンパイリし実行したのですが、ioexceptionの例外が出ているようです。 echoサーバは動いていないのでしょうか?? echoサーバが動いているかどうか確認する方法はないですか? このようなプログラムです。 import java.io.*; import java.net.*; public class EchoClient{ public static void main(String args[])throws IOException{ Socket echoS = null; BufferedReader in = null; PrintStream out = null; try{ echoS = new Socket("1300",7); in = new BufferedReader(new InputStreamReader(echoS.getInputStream())); out = new PrintStream(echoS.getOutputStream()); }catch(UnknownHostException e){ System.out.println("ホストに接続できません"); System.exit(1); }catch(IOException e){ System.out.println("ioコネクションを得られません"); System.exit(1); } BufferedReader stdln = new BufferedReader(new InputStreamReader(System.in)); String typedString; while((typedString = stdln.readLine()) != null){ out.println(typedString); System.out.println("サーバーからのエコー" + in.readLine()); } in.close(); out.close(); stdln.close(); echoS.close(); } }

  • Java
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

telnet 1300 7 で接続できるか、なんてのはどうですか。

azicyan
質問者

お礼

早速やってみますね!

azicyan
質問者

補足

だめでした・・・・ 動いてないみたいです

関連するQ&A

  • java ファイル操作

    現在javaでファイル操作しファイルの文字列を検索したりファイルに文字列を追加したりする ものを作成しています。 現状のコードはこのような感じです。 class addresskensaku{ public static void main(String[] args)throws IOException{ System.out.println("数字を選択\n1.名前で検索\n2.年齢で検索\n3.出身地で検索\n4.追加"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); char res = str.charAt(0); //1が選択された場合 if(res == '1' || res == '1'){ System.out.println("名前を入力してください。"); BufferedReader fn = new BufferedReader(new InputStreamReader(System.in)); String str1 = fn.readLine(); try{ FileReader freader = new FileReader("addressdata.txt"); BufferedReader breader = new BufferedReader(freader); String tmp = null; //検索 System.out.println("検索結果 :"); while((tmp=breader.readLine())!=null){ String[] words = tmp.split(","); //部分一致 if(words[0].indexOf(str1) != -1){ System.out.println(tmp); } } breader.close(); }catch(IOException e){ System.out.println("e"); } } //2が入力された場合 if(res == '2' || res == '2'){ System.out.println("年齢を入力してください。"); BufferedReader o = new BufferedReader(new InputStreamReader(System.in)); String ol = o.readLine(); try{ FileReader freader = new FileReader("addressdata.txt"); BufferedReader breader = new BufferedReader(freader); String tmp =null; //検索 while((tmp=breader.readLine())!=null){ String[] words = tmp.split(","); //完全一致 if (ol.equals(words[1])){ // System.out.println("検索結果:"); System.out.println(tmp); } } breader.close(); }catch(IOException e){ System.out.println("e"); } } //3が入力された場合 if(res == '3' || res == '3'){ System.out.println("出身地を入力してください。"); BufferedReader p = new BufferedReader(new InputStreamReader(System.in)); String pref = p.readLine(); try{ FileReader freader = new FileReader("addressdata.txt"); BufferedReader breader = new BufferedReader(freader); String tmp = null; //検索 while((tmp=breader.readLine())!=null){ String[] words = tmp.split(","); //部分一致 if(words[2].indexOf(pref) != -1){ System.out.println(tmp); } } breader.close(); }catch(IOException e){ System.out.println("e"); } } //4が入力された場合 追加 if(res == '4' || res == '4'){ //氏名入力 System.out.println("氏名を入力してください。"); BufferedReader n = new BufferedReader(new InputStreamReader(System.in)); String str2 = n.readLine(); //年齢入力 System.out.println("年齢を入力してください。"); BufferedReader o = new BufferedReader(new InputStreamReader(System.in)); String str3 = o.readLine(); //住所入力 System.out.println("住所を入力してください。"); BufferedReader a = new BufferedReader(new InputStreamReader(System.in)); String str4 = a.readLine(); //ファイルに書き込み try{ File file = new File("addressdata.txt"); FileWriter filewriter = new FileWriter(file, true); filewriter.write(str2+","+str3+","+str4+"\r\n"); filewriter.close(); }catch(IOException e){ System.out.println("e"); } } } } これをカプセル化し 各機能ごとにメソッドを分けて作ろうかなと思っています。 結果の出力はmainでやる予定です。

  • 初歩的なソケット通信(java)

    初歩的なソケット通信(java) javaのソケット通信プログラムについて質問させて頂きます。まだまだ基礎の段階なのですが、詰まってしまたので、良かったら教えてください。 以下プログラムコード ------------------------------------- //サーバー側 import java.net.*; import java.io.*; public class Server { static int port = 12345; public static void main(String[] args) { try{ //サーバソケットの作成 ServerSocket ssoc = new ServerSocket(port); //メインループ while(true){ try{ System.out.println("クライアントからの接続を"+ port +"で待ちます"); Socket soc = ssoc.accept(); System.out.println(soc.getInetAddress().getHostName()+"から接続を受けました"); //処理をスレッドに任せます new Connect(soc); }catch(IOException e1){ e1.printStackTrace(); } } }catch(IOException e2){ e2.printStackTrace(); } } } class Connect extends Thread{ private Socket socket = null; public Connect(Socket socket){ this.socket = socket; //スレッド開始 this.start(); } public void run(){ try{ //出力ストリームを取得 OutputStream os = socket.getOutputStream(); PrintWriter out = new PrintWriter(os,true); //入力ストリームを取得 InputStream is = socket.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader in = new BufferedReader(isr); String inputLine; while((inputLine = in.readLine()) != null){ //System.out.println(inputLine); out.println(inputLine); } System.out.println("処理が終わったので接続を切ります"); in.close(); out.close(); socket.close(); }catch(Exception e1){ try{ socket.close(); }catch(Exception e2){ e2.printStackTrace(); } } } }

  • javaでファイル操作し検索するものを作ってます

    目的はテキストファイル内の文字列に検索をかけヒットしたものを表示する というものです import java.io.*; class kensakuTest{ public static void main(String[] args)throws IOException{ System.out.println("検索方法を選択してください。\n0:学籍番号で検索\n1:名前で検索\n2:出身地で検索"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str = br.readLine(); char res = str.charAt(0); //0が選択された場合 if(res == '0'){ System.out.println("学籍番号を入力してください。"); BufferedReader bn = new BufferedReader(new InputStreamReader(System.in)); String str0 = fn.readLine(); char num = str0.charAt(0); try{ FileReader freader = new FileReader("addressdata.txt"); BufferedReader breader = new BufferedReader(freader); String tmp = null; while((tmp=breader.readLine())!=null){ //完全一致 if(){ System.out.println("検索結果:"); System.out.println(tmp); } } breader.close(); }catch(IOException e){ System.out.println("e"); } } //1が選択された場合 if(res == '1'){ System.out.println("名前を入力してください。"); BufferedReader fn = new BufferedReader(new InputStreamReader(System.in)); String str1 = fn.readLine(); char name = str1.charAt(0); try{ FileReader freader = new FileReader("data.txt"); BufferedReader breader = new BufferedReader(freader); String tmp = null; //検索 //部分一致 while((tmp=breader.readLine())!=null){ if(tmp.indexOf(str1) > -1){ System.out.println("結果は:"); System.out.println(tmp); } } breader.close(); }catch(IOException e){ System.out.println("e"); } } //2が入力された場合 if(res == '2'){ System.out.println("出身地を入力してください。"); BufferedReader bl = new BufferedReader(new InputStreamReader(System.in)); String belong = bl.readLine(); try{ FileReader freader = new FileReader("addressdata.txt"); BufferedReader breader = new BufferedReader(freader); String tmp = null; while((tmp=breader.readLine())!=null){ //完全一致 if(){ System.out.println("検索結果:"); System.out.println(tmp); } } breader.close(); }catch(IOException e){ System.out.println("e"); } } } } 現状はここまでできましたが完全一致の検索のやり方がわかりません。 あと問題点があるのですが 読み取るファイルがこのような場合 2000,田中 太郎,福島県 2001,福島 太郎,東京都 名前で福島 と検索をかけたとします この場合答えが 2000,田中 太郎,福島県 2001,福島 太郎,東京都 と表示されてしまいます このカンマで区切られている学籍番号、名前、出身地をうまく分け それぞれ判別する方法はないのでしょうか? よろしくおねがいします。

    • ベストアンサー
    • Java
  • TCP関係のjavaプログラム

    TCPでオウム返しをするサーバとクライアントソフトでクライアント側でピリオドだけを入力すると接続を切るプログラムを作っているのですがなかなか思い通りにいきません。 正しいソースコードを教えてください。 クライアント側のソースコード import java.io.*; import java.net.*;   public class echoClient { public static void main(String[] args) { Socket echoSocket = null; DataOutputStream os = null; BufferedReader is = null;   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); } } } } サーバー側のプログラム import java.io.*; import java.net.*; public class echoServer { public static void main(String args[]) { ServerSocket echoServer = null; String line; BufferedReader is; PrintStream os; Socket clientSocket = null; try { echoServer = new ServerSocket(9999); } catch (IOException e) { System.out.println(e); } try { clientSocket = echoServer.accept(); is = new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); os = new PrintStream(clientSocket.getOutputStream()); while (true) { line = is.readLine(); os.println(line); } } catch (IOException e) { System.out.println(e); } }

  • 入出力について

    下記のソースコードで、2点不明な点がありますので ご教授お願い致します。 import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.IOException; public class ab3{ public static void main(String args[]){ BufferedReader myReader = new BufferedReader( new InputStreamReader(System.in)); try{ System.out.println("名前を入力してください"); String myString = myReader.readLine(); System.out.println(myString + "さん、こんにちわ!"); }catch(IOException e) { } } } 1. BufferedReader myReader = new BufferedReader( new InputStreamReader(System.in)); ここのソースコードについてですが、 new BufferedReader(new InputStreamReader ^^^ ^^^ (System.in)); 「new」が二つもついていますが、何故二つも つける必要があるのでしょうか。 一つであっても問題はないと思われ、 2番目の「new」を取り除くと、エラーが表示されて しまいます。 また、上記ソースコードを BufferedReader myReader ; myReader = InputStreamReader(System.in)); と分割して書こうとしてもエラーが表示されてしまいます。 2. String myString = myReader.readLine(); ここの部分ですが、これはString型のインスタンス(コンストラクタ?)を 作っていると思われますが、この部分を String myString ; myString = myReader.readLine(); または、 String myString = new myReader.readLine(); としてたら、エラーが表示されてしまいます。 JAVAを初めて間もなく、質問の内容がわかりづらいと 思われます。入出力について理解するのに苦労して おりますが、何卒ご教授の程お願い致します。

    • ベストアンサー
    • Java
  • Javaの簡易クライアント

    メールの閲覧ができるプログラムを作成してコンパイルして実行はできるのですが閲覧ができずエラーが出てしまいます。 正しいソースコードを教えてください。プログラムに詳しい方宜しくお願いします。 画像は実行結果です。 import java.io.*; import java.net.*; public class mail2 { public static void main(String args[]) throws IOException { String server,user,pass,str,num; int port = 110; StringBuffer sb = new StringBuffer(""); Socket sock; BufferedReader sockin; BufferedWriter sockout; System.out.println("サーバーを入力"); BufferedReader serverin = new BufferedReader(new InputStreamReader(System.in)); server = serverin.readLine(); System.out.println("ユーザーを入力"); BufferedReader userin = new BufferedReader(new InputStreamReader(System.in)); user = userin.readLine(); System.out.println("パスワードを入力"); BufferedReader passin = new BufferedReader(new InputStreamReader(System.in)); pass = passin.readLine(); try { sock = new Socket(server, port); sockin = new BufferedReader(new InputStreamReader(sock.getInputStream())); sockout = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream())); sockout.write("USER " + user + "\r\n"); sockout.write("PASS " + pass + "\r\n"); sockout.write("LIST\r\n"); sockout.write("QUIT\r\n"); sockout.flush(); while ((str = sockin.readLine()) != null) { System.out.println(str); } sockout.close(); sockin.close(); sock.close(); } catch (Exception ex) { ex.printStackTrace(); } System.out.println("どのメールを見ますか?"); BufferedReader numin = new BufferedReader(new InputStreamReader(System.in)); num = numin.readLine(); try { sock = new Socket (server, port); sockin = new BufferedReader(new InputStreamReader(sock.getInputStream())); sockout = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream())); sockout.write("USER " + user + "\r\n"); sockout.write("PASS " + pass + "\r\n"); sockout.write("RETR " +num+"\r\n"); sockout.write("QUIT\r\n"); sockout.flush(); while ((str = sockin.readLine()) != null) { System.out.println(str); } sockout.close(); sockin.close(); sock.close(); } catch (Exception ex) { ex.printStackTrace(); } } }

    • ベストアンサー
    • Java
  • 今勉強中のjavaで。わからないことがあります。

    import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); int num =Integer.parseInt(str1); System.out.println("あなたは" + num +"歳です。"); } } ------------------------------- import java.io.*; class Ireru { public static void main(String args[]) throws IOException{ System.out.println("あなたは何歳ですか?"); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); String str1 = br.readLine(); System.out.println("あなたは" + str1 +"歳です。"); } } なぜ下では悪いのですか?なぜnum をつかないといけないかがわかりません。正確には str1とnumの違いがわからなくて困っています。何が混乱の原因ですか?

    • ベストアンサー
    • Java
  • プログラムの組み合わせ方

    java初心者です。 2つのプログラムを組み合わせて1つのプログラムにしたいんですが、イマイチ分かりません。 このプログラムと、 import java.io.*; class Hello2 {  public static void main(String[] args) throws IOException {   System.out.println("名前を入力してください");   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   String str = br.readLine();   System.out.println(str + "さん、こんにちは!");  } } このプログラムを、 import java.io.*; class Sanbai{  public static void main(String[] args) throws IOException {   System.out.println("好きな数を入力してください");   BufferedReader br = new BufferedReader(new InputStreamReader(System.in));   String str = br.readLine();   int x;   x = Integer.parseInt(str);   System.out.println("あなたの入力した数:" + x);   System.out.println("その3倍の数:" + (x*3));  } } 組み合わせて1つのプログラムにするにはどうしたらいいですか?(>_<)

    • ベストアンサー
    • Java
  • コマンドライン引数

    『やさしいJava』で勉強してます。 import java.io.*; class Sam3 { public static void main(String args[]) { if(args.length != 1){ System.out.println("ファイル名が違うよ。"); System.exit(0); } try{ BufferedReader br= new BufferedReader(new FileReader(args[0])); String str; while((str = br.readLine()) != null){ System.out.println(str); } br.close(); }catch(IOException e){ System.out.println("エラー"); } } } で、コンパイルして、 Sam3 test2.txt と実行しても 「準備ができていません。読み取り中・・・」 としかでません。 なにか間違いがあるのでしょうか? お願いします。

    • ベストアンサー
    • Java
  • BufferedReaderでのエラー

    Javaプログラムを作成しています. 標準入力で入力された文字列を表示し,exitが入力されるまで繰り返すプログラムです. エラーが出ますが,対策方法がわかりません. ソースコード,実行結果,エラーは以下の通りです. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Test { /** * @param args */ public static void main(String[] args) { System.out.println("Program starts."); while (true) { String input = null; input = getInputLine(); System.out.println("echo:" + input); if (input.equals("exit")) { break; } } System.out.println("Program exits."); } private static String getInputLine() { String input = null; BufferedReader br = null; try { br = new BufferedReader(new InputStreamReader(System.in)); input = br.readLine(); } catch (IOException e) { e.printStackTrace(); } finally { try { if (br != null) { br.close(); } } catch (IOException e) { e.printStackTrace(); } } return input; } } Program starts. test echo:test echo:null java.io.IOException: Stream closed at java.io.BufferedInputStream.getBufIfOpen(BufferedInputStream.java:145) at java.io.BufferedInputStream.read(BufferedInputStream.java:308) at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:264) at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:306) at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:158) at java.io.InputStreamReader.read(InputStreamReader.java:167) at java.io.BufferedReader.fill(BufferedReader.java:136) at java.io.BufferedReader.readLine(BufferedReader.java:299) at java.io.BufferedReader.readLine(BufferedReader.java:362) at kadai1.Test.getInputLine(Test.java:34) at kadai1.Test.main(Test.java:18) Exception in thread "main" java.lang.NullPointerException at kadai1.Test.main(Test.java:21)

    • ベストアンサー
    • Java

専門家に質問してみよう