アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のプログラムをコンパイルして実行したら
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();
}
}

A 回答 (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
とか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!