Отправка файлов через сокеты - PullRequest
0 голосов
/ 28 октября 2011

Есть ли способ отправить файл через сокеты в Java?Если так, то как?Если нет, то как можно отправить файл с одного компьютера на другой с помощью Java?

Ответы [ 5 ]

4 голосов
/ 28 октября 2011

Вы открываете соединение с сокетом, копируете байты файла в сокет и считываете байты с другого конца сокета.так же, как вы отправляете любой поток через соединение через сокет.Тем не менее, существует множество способов скопировать файл с одного компьютера на другой (используя java), включая копирование в общую файловую систему, ftping файл, http отправка файла на веб-сервер ...

1 голос
/ 28 октября 2011
import java.io.BufferedInputStream;



import java.io.File;

import java.io.FileInputStream;

import java.io.IOException;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;

public class Main
 {

 public static void main(String[] args) throws IOException {

 ServerSocket servsock = new ServerSocket(123456);

File myFile = new File("s.pdf");

while (true)
 {

  Socket sock = servsock.accept();

   byte[] mybytearray = new byte[(int) myFile.length()];

   BufferedInputStream bis = new BufferedInputStream(new FileInputStream(myFile));

  bis.read(mybytearray, 0, mybytearray.length);

   OutputStream os = sock.getOutputStream();

   os.write(mybytearray, 0, mybytearray.length);

     os.flush();

    sock.close();

  }

 }

}

The client module


import java.io.BufferedOutputStream;

import java.io.FileOutputStream;

import java.io.InputStream;

import java.net.Socket;

public class Main {

public static void main(String[] argv) throws Exception
 {

 Socket sock = new Socket("127.0.0.1", 123456);

 byte[] mybytearray = new byte[1024];

 InputStream is = sock.getInputStream();

 FileOutputStream fos = new FileOutputStream("s.pdf");

  BufferedOutputStream bos = new BufferedOutputStream(fos);

   int bytesRead = is.read(mybytearray, 0, mybytearray.length);

 bos.write(mybytearray, 0, bytesRead);

   bos.close();

   sock.close();

  }

}
1 голос
/ 28 октября 2011

Клиент-серверная архитектура наиболее подходит для достижения желаемого.

Запустите FileServer на первом компьютере и выполните FileClient на втором.

Отправка файловчерез сокет.

0 голосов
/ 28 октября 2011

Если ваше основное внимание уделяется отправке файлов с одного компьютера на другой.И не при создании собственного файлового сервера и клиента с использованием проприетарного протокола, вы можете встроить ftp-сервер на стороне сервера и ftp клиент на стороне клиента в вашу собственную javaприложения.

0 голосов
/ 28 октября 2011
...