1

私はsocketConnectionを使ってブラックベリーカーブ9300でプログラムを書いています。入力ストリームを読み取ろうとすると、ストリームが閉じている/ソケット ID が正しくないというエラーが発生します。何が問題なのか教えてください。

String url = Constants.SOCKET + serverIp + Constants.COLON + serverPort + UserInfo.getConnectionType();

//connection open
socketConne`enter code here`ction = (SocketConnection) Connector.open(url, Connector.READ_WRITE,true);

socketConnection.setSocketOption(SocketConnection.DELAY, 0);
socketConnection.setSocketOption(SocketConnection.KEEPALIVE, 1);
socketConnection.setSocketOption(SocketConnection.RCVBUF, 16834);
socketConnection.setSocketOption(SocketConnection.LINGER, 10);

outputStream = socketConnection.openDataOutputStream();

//Output stream deligated to Sender Object to send the command
sender = new Sender(outputStream);
sender.send(command);
inputStream = socketConnection.openDataInputStream();

//read inputstream
while (tobeRead < toRead && retryCount < 5) {
    try {
        if ((toRead - tobeRead) > 8192) {
            readBufferLength = 8192;
        } else {
            readBufferLength = (toRead - tobeRead);
        }
        buffer = new byte[readBufferLength + 1];

        bytesRead = inputStream.read(buffer, 0, readBufferLength);
        sb.append(new String(buffer, 0, bytesRead));
        tobeRead += bytesRead;
        totalBytesRead += bytesRead;
    } catch (Exception cce) {
    }
}

読み取るバイト数が 5192 であるとします。2123 バイトと言うと、ループが繰り返され、次回は読み取り中に失敗します。これを別のスレッドで実行します。接続にWIFIネットワークを使用しています

4

0 に答える 0