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

}

转载于:https://www.cnblogs.com/songtzu/archive/2013/02/25/2932216.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值