Отправить строку запроса + файл с использованием сокетов - Java

Я пытаюсь отправить "строку запроса" и файл через сокет.

Клиент (отправитель)

Socket socket = new Socket(hostName, SOCKET_PORT);
DataOutputStream os = new DataOutputStream(socket.getOutputStream());
FileInputStream fis = new FileInputStream(fileName);
os.writeBytes("PUT c:\dev\foo\helloworld.txt" + "\r\n")
byte[] buffer = new byte[1024];
int bytes;
while((bytes = fis.read(buffer)) != -1 ) {
    try {
        os.write(buffer, 0, bytes);
    } catch (IOException e) {e.printStackTrace();}
}

Север (получатель)

ServerSocket serverSocket = new ServerSocket(SOCKET_PORT);
Socket clientSoc = serverSocket.accept();
InputStream inputStream = clientSoc.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String requestLine = bufferedReader.readLine();
File currentFile = (File)new ObjectInputStream(inputStream).readObject(); //This doesn't work
byteSequence = new byte[new Long(currentFile.length()).intValue()];
for(int i =0; i<currentFile.length();i++){
    byteSequence[i] = (byte)clientSoc.getInputStream().read();
} 
try {
    FileOutputStream newFile = new FileOutputStream(currentFile.getName());
    newFile.write(byteSequence,0, byteSequence.length);
} catch (IOException e) {e.printStackTrace();}

Я могу прочитать строку запроса на сервере, но при попытке прочитать файл выдает исключение (строка ниже).

File currentFile = (File)new ObjectInputStream(inputStream).readObject(); 

java.io.Stream.CorruptedException:

java.io.StreamCorruptedException: invalid stream header: 0A48656C

Что именно я делаю не так?

1 ответ

Вы пытаетесь получить доступ к объекту, который даже не был передан в сокет... вы только передали байт строки на сервер, но никогда не передаете объект на сервер, используя ObjectOutputStream..

Другие вопросы по тегам