• 締切済み

TCPプログラミング

以下のプログラムをコンパイルして実行したら Exception in thread "main" java.lang.IllegalArgumentException: Paraneter(s):<Server> <Word> [<Port>] at TCPEchoClient.main(TCPEchoClient.java:9) というメッセージが表示されました。 このメッセージの意味が全く分かりません。 分かる方がいらっしゃいましたら教えてください。 お願いします。 本来なら Received:****(←****は自分が指定した文字列) となるはずなんですが… このプログラムはTCPを使ってエコーサーバと通信するクライアントです。 import java.net.*; import java.io.*; public class TCPEchoClient{ public static void main(String[] args)throws IOException{ if((args.length < 2)||(args.length > 3)) throw new IllegalArgumentException("Parameter(s):<Server><Word>[<Port>]"); String server = args[0]; byte[] byteBuffer = args[1].getBytes(); int servPort = (args.length == 3) ? Integer.parseInt(args[2]) : 7; Socket socket = new Socket(server,servPort); System.out.println("Connected to server...sending echo string"); InputStream in = socket.getInputStream(); OutputStream out = socket.getOutputStream(); out.write(byteBuffer); int totalBytesRcvd = 0; int bytesRcvd; while(totalBytesRcvd < byteBuffer.length){ if(bytesRcvd = in.read(byteBuffer, totalBytesRcvd, byteBuffer.length - totalBytesRcvd) == -1) throw new SocketException("Connection closed prematurely"); totalBytesRcvd += bytesRcvd; } System.out.println("Received: " + new String (byteBuffer)); socket.close(); } }

みんなの回答

  • osumitan
  • ベストアンサー率33% (102/307)
回答No.1

> if((args.length < 2)||(args.length > 3)) > throw new IllegalArgumentException("Parameter(s):<Server><Word>[<Port>]"); ってところで例外が発生してるんでしょうね。 実行時のコマンドライン引数が2個か3個じゃないとダメ、 という仕様になっているのでしょう。 『java TCPEchoClient <Server> <Word> [<Port>]』というように。 192.168.0.1に対して"test"をポート12345で送るなら、 $ java TCPEchoClient 192.168.0.1 "test" 12345 とか。

関連するQ&A