我試圖通過Weberknecht Java library連接到WebSocket。當Java客戶端試圖建立連接,我收到以下錯誤信息:通過Weberknecht連接到WebSocket時發生ArrayIndexOutOfBoundsException
W/System.err(805): java.lang.ArrayIndexOutOfBoundsException: length=1000; index=1000
W/System.err(805): at ...WebSocketConnection.connect(WebSocketConnection.java:86)
這是導致問題的一部分:
public void connect() throws WebSocketException {
try {
if (connected) {
throw new WebSocketException("already connected");
}
socket = createSocket();
input = new DataInputStream(socket.getInputStream());
output = new PrintStream(socket.getOutputStream());
output.write(handshake.getHandshake());
boolean handshakeComplete = false;
int len = 10000;
byte[] buffer = new byte[len];
int pos = 0;
ArrayList<String> handshakeLines = new ArrayList<String>();
while (!handshakeComplete) {
int b = input.read();
buffer[pos] = (byte) b; // THIS LINE CAUSES THE EXCEPTION
pos += 1;
if (buffer[pos - 1] == 0x0A && buffer[pos - 2] == 0x0D) {
String line = new String(buffer, "UTF-8");
if (line.trim().equals("")) {
handshakeComplete = true;
} else {
handshakeLines.add(line.trim());
}
buffer = new byte[len];
pos = 0;
}
}
什麼會導致這個問題?這個客戶端庫是否可能不符合服務器使用的WebSocket版本?
issue over there at Weberknecht尚未解決。我想問這個問題,因爲它似乎是一個相當普遍的問題(閱讀WebSocket標題和握手數據)。
告訴我,在第86行 – RajeshVijayakumar
聲明它是'緩衝液[POS] =(字節)B;'視標中的代碼。 – caw
您應該知道這個庫存在安全問題。請參閱:http://www.cs.utexas.edu/~shmat/shmat_ccs12.pdf – leggetter