Java sending and receiving file (byte[]) over sockets
Server
publicclassServer{/**
* @param args the command line arguments
*/
public static void main(String[] args)throwsIOException{
ServerSocket serverSocket =null;try{
serverSocket =newServerSocket(4444);
}catch(IOException ex){
System.out.println("Can't setup server on this port number. ");
}
Socket socket =null;
InputStream is =null;
FileOutputStream fos =null;
BufferedOutputStream bos =null;
int bufferSize =0;try{
socket = serverSocket.accept();}
catch(IOException ex){
System.out.println("Can't accept client connection. ");
}try{
is = socket.getInputStream();
bufferSize = socket.getReceiveBufferSize();
System.out.println("Buffer size: "+ bufferSize);
}catch(IOException ex){System.out.println("Can't get socket input stream. ");
}try{
fos =newFileOutputStream("M:\\test2.xml");
bos =newBufferedOutputStream(fos);
}catch(FileNotFoundException ex){
System.out.println("File not found. ");
}
byte[] bytes =newbyte[bufferSize];
int count;
while((count = is.read(bytes))>0){
bos.write(bytes,0, count);
}
bos.flush();
bos.close();
is.close();
socket.close();
serverSocket.close();}
}
and the Client
publicclassClient{/**
* @param args the command line arguments
*/
public static void main(String[] args)throwsIOException{
Socket socket =null;
String host ="127.0.0.1";
socket =newSocket(host,4444);
File file =newFile("M:\\test.xml");// Get the size of the file
long length = file.length();
if(length >Integer.MAX_VALUE){
System.out.println("File is too large.");
}
byte[] bytes =newbyte[(int) length];
FileInputStream fis =newFileInputStream(file);
BufferedInputStream bis =newBufferedInputStream(fis);
BufferedOutputStream out =newBufferedOutputStream(socket.getOutputStream());
int count;
while((count = bis.read(bytes))>0){
out.write(bytes,0, count);
}
out.flush();
out.close();
fis.close();
bis.close();
socket.close();}
}