• 如何用Java语言实现两台计算机之间的文件传输?
  • java

最近新学习了Java语言,算是一个小白,想用TCP Socket进行网络编程,使得服务器端接受客户端的文件,但是遇到了一个错误,有人知道该怎么解决吗?

//这是服务器端的代码
public class UploadServer {
   public static void main(String[] args) {
       System.out.println("服务器端运行...");
       try {
           //创建一个ServerSocket监听8080端口的客户端请求
           ServerSocket serverSocket = new ServerSocket(8080);

           //使用accept()阻塞当前线程,等待客户端请求
           Socket socket = serverSocket.accept();

           //由Socket获得输入流,并创建缓冲输入流
           BufferedInputStream in = new BufferedInputStream(socket.getInputStream());

           //由文件输出流创建缓冲输出流
           FileOutputStream out = new FileOutputStream("G:\\站点\\新建文本文档.txt");

           //创建一个缓冲区
           byte[] buffer = new byte[1024];
           //首次向Socket读取数据
           int len = in.read(buffer);
           while (len != -1) {
               //写入数据到文件
               out.write(buffer, 0, len);
               //再次从Socket读取数据
               len = in.read(buffer);
           }
           System.out.println("接收完成!");
       } catch (IOException e) {
           e.printStackTrace();
       }
   }
}
//这是客户端的代码
public class UploadClient {
public static void main(String[] args) {
 System.out.println("客户端运行...");
 try {
  //向非本机的8080客户端发出请求
  Socket socket = new Socket("192.168.0.106",8080);
  //由Socket获得输出流,并创建缓冲输出流
  BufferedOutputStream out = new BufferedOutputStream(socket.getOutputStream());
  //创建文件输入流
  FileInputStream fin = new FileInputStream("F:\\站点\\新建文本文档.txt");
  //由文件输入流创建缓冲输出流
  BufferedInputStream in = new BufferedInputStream(fin);
  //准备一个缓冲区
  byte[] buffer = new byte[1024];
  //首次读取文件
  int len = in.read(buffer);
  while(len != -1) {
   //数据写入Socket
   out.write(buffer,0,len);
   //再次读取文件
   len = in.read(buffer);
  }
  System.out.println("上传成功!");
 } catch(ConnectException e) {
  System.out.println("服务器未启动!");
 } catch (IOException e) {
  e.printStackTrace();
 }


}

}

先运行服务器端,在运行客户端


  • vicky    2020-07-03 13:44:56
  • 阅读 1811    收藏 0    回答 1
  • 邀请
  • 收藏
  • 分享
发送
登录 后发表评论
  • 51testing软件测试圈微信