私はお互いに通信する必要のあるプログラムとワードサーバーを持っています。私はこれをうまくやって、サーバーに情報を送り、もう一度それを受け取ることができます。 私は、次のコードを持っている:文字列を分割するときに無効なポート番号 - Javaソケット
try{
Socket sock=new Socket(InetAddress.getByName(null), 12837);
InputStream s=sock.getInputStream();
PrintStream out = new PrintStream(sock.getOutputStream());
BufferedReader r= new BufferedReader(new InputStreamReader(s));
String line = r.readLine();
String[] code = line.split("+");
while (line != null) {
System.out.println ("received: " + line);
// System.out is to the console.
// out.println is to the server
out.println("161*");
line = r.readLine();
}
} catch (UnknownHostException e) {
System.out.println("Unknown host. Check the hostname or ip address of the server");
} catch (ConnectException e) {
System.out.println("Problems connecting to server. Is it running?");
} catch (NumberFormatException e) {
System.out.println("Port number should be an integer");
} catch (IllegalArgumentException e) {
System.out.println("The port number needs to be less than 65536");
} catch (Throwable ex){System.out.println ("Exception: " + ex.toString());
}
アイデアは、私は言葉サーバを起動することで、自分のアプリケーションを実行し、それがその後、<code>
は6つのランダムな文字と数字でメッセージ"<bonjour+[code]>"
を受信します。私が必要とするのは、サーバーに私のユーザーIDである161*<code>
をエコーバックすることです。
たとえば、サーバーには"<bonjour+wj1234>"
と表示され、"161*wj1234"
をエコーバックする必要があります。
私は最も簡単な方法は、+
でサーバーから行を分割するだろう考え出し(私も>
を削除する必要があります)が、それを実行しているとき、私は次のエラーを取得する:
ポート番号を65536未満にする必要があります。
分割された文字列で何もしていない場合でも、これは実行されます。文字列自体を分割する行為は、何らかの理由でポート番号を変更することになります。ポート番号は手動で12837
に設定され、変更されません。
「IllegalArgumentException'をキャッチして、ポート番号に関するエラーメッセージを表示しています。その '' IllegalArgumentException''がどこから来たのか確認してください。 '' System.out.println'の前に '' e.printStackTrace() ''を置いてみてください。 – f1sh
コードのどこかにIlegalArgumentExceptionがスローされ、キャッチがポートについてその部分を表示しますが、実際には変更されませんでした。 –
http://stackoverflow.com/questions/2198373/java-how-to-split-a-string-on-plus-signs – Reimeus