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();}

}

posted @ 2013-02-25 15:55  songtzu  阅读(289)  评论(0编辑  收藏  举报