ソケットを使用してファイルを送信しようとしていますが、ファイルを受け取ったときにそのファイルを保存できません。 デバッガ示すように、そのコードはソケットを使用してファイルを受信して保存する方法
bytesRead = is.read(mybytearray、現在、(mybytearray.length - 現在))で停止します。
何も起こりません。
bytesRead = is.read(mybytearray、0、mybytearray.length); - あなたが代わりに例えばOutputStreamに直接書き込む試すことができます等しい17
public static void main(String[] args) throws IOException {
FileOutputStream fileOutputStream = null;
BufferedOutputStream bufferedOutputStream = null;
Socket socket = null;
ServerSocket serverSocket = null;
try {
serverSocket = new ServerSocket(SOCKET_PORT);
while (true) {
System.out.println("Waiting...");
try {
socket = serverSocket.accept();
System.out.println("Accepted connection : " + socket);
int bytesRead;
int current = 0;
byte[] mybytearray = new byte[FILE_SIZE];
InputStream is = socket.getInputStream();
fileOutputStream = new FileOutputStream(FILE_TO_RECEIVED);
bufferedOutputStream = new BufferedOutputStream(bufferedOutputStream);
bytesRead = is.read(mybytearray, 0, mybytearray.length);
current = bytesRead;
do {
bytesRead =
is.read(mybytearray, current, (mybytearray.length - current));
if (bytesRead >= 0) current += bytesRead;
} while (bytesRead > -1);
bufferedOutputStream.write(mybytearray, 0, current);
bufferedOutputStream.flush();
System.out.println("File " + FILE_TO_RECEIVED
+ " recieved (" + current + " bytes read)");
} finally {
if (fileOutputStream != null) fileOutputStream.close();
if (bufferedOutputStream != null) bufferedOutputStream.close();
if (socket != null) socket.close();
}
}
} finally {
if (serverSocket != null) serverSocket.close();
}
}
のように何のバイトが読み込まれていない場合に停止することは非常に低速な接続 –
@ThijsSteelに問題がある可能性があります:読み取りゼロを返すことはありません、それが読むことを頼まれた場合を除き接続がどれほど遅い場合でもゼロバイト。 –
@JamesKPolkあなたは正しいよ –