私は本を読んでいるのでテスト目的であり、私は演習で触れたプログラムを見つけることができませんでした。おそらくそれをデバッグして分析するために、ArrayIndexOutOfBoundExceptionを作成する必要があります。ArrayIndexOutOfBoundExceptionを強制する?
たとえば、BufferOverFlowのようなものにする必要があります。 Cでは、Javaの良い例ではないかもしれません。
プログラムは、1つのアレイから別のアレイに割り当てられたものをサーバー経由で実行しているようです。
クライアントでは、制限付きコンテンツとして10の文字列配列があります。サーバーのプログラムは10文字以上の文字列を入力します。
ご迷惑をおかけして申し訳ありません。
この動作はなぜですか? Javaプログラミング言語で
クライアント
import java.io.*;
import java.net.*;
import java.util.*;
public class JSimpleClient {
Socket sock;
Scanner eingabe;
String[] sat = new String[10];
BufferedWriter bw;
ObjectInputStream stream;
String s;
public static void main(String[] args) throws ClassNotFoundException {
JSimpleClient ct = new JSimpleClient();
ct.jetzt();
}
public void jetzt() throws ClassNotFoundException {
try {
sock = new Socket("127.0.0.1", 1000);
System.out.print("Bitte etwas eingeben:");
eingabe = new Scanner(System.in);
String input = eingabe.nextLine();
bw = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream()));
bw.write(input);
bw.newLine();
bw.flush();
stream = new ObjectInputStream(sock.getInputStream());
sat = (String[]) stream.readObject();
for(String d : sat) {
s = d;
System.out.println(s);
}
} catch (ArrayIndexOutOfBoundsException ex) {System.out.println("BufferOverFlow ?!");}
catch(IOException ex) {ex.printStackTrace();}
}
}
サーバ
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
public class JsimpleServer {
String[] sa = {"okay","okay","okay","okay","okay","okay","okay"
,"okay","okay","okay","okay","okay","okay","okay","okay","okay"};
BufferedReader reader;
ObjectOutputStream oos;
ServerSocket ss;
Socket socket1;
boolean swi = true;
public static void main(String[] args) {
JsimpleServer jss = new JsimpleServer();
jss.startApp();
}
private void startApp() {
try {
ss = new ServerSocket(1000);
while(swi) {
socket1 = ss.accept();
System.out.println("Server is started !");
oos = new ObjectOutputStream(socket1.getOutputStream());
oos.writeObject(sa);
reader = new BufferedReader(new InputStreamReader(socket1.getInputStream()));
System.out.println(reader.readLine());
oos.close();
}
} catch (IOException ex) {System.out.println("Couldn`t connect !");
Logger.getLogger(JsimpleServer.class.getName()).log(Level.SEVERE, null, ex);}
}
}
ArrayIndexOutOfBoundsExceptionを取得するには、配列、文字列、およびインデックスを使用して何かを行う必要があります。私が見る限り、あなたはそうではありません。 –
私はsa []を16個の文字列で、[]を10個の制限付き配列で使用します。たぶんコード内のどこを操作するべきかを指摘するかもしれません。ありがとう –
'ArrayIndexOutOfBoundExceptionを強制しますか?' [タグ:ソケット]とは何の関係もありません。 – EJP