Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';t通过套接字在android的图像视图上显示图像_Java_Android_Image_Sockets_Screenshot - Fatal编程技术网

Java Can';t通过套接字在android的图像视图上显示图像

Java Can';t通过套接字在android的图像视图上显示图像,java,android,image,sockets,screenshot,Java,Android,Image,Sockets,Screenshot,我正在尝试使用Robot类从服务器获取一个屏幕截图,然后将其发送到android,然后在图像视图小部件上显示该屏幕截图 这是我的服务器代码: public static void main(String[] args) { Thread t = new Thread(new Runnable() { @Override public void run() { try { ServerSocket server = new ServerSocket(40

我正在尝试使用Robot类从服务器获取一个屏幕截图,然后将其发送到android,然后在图像视图小部件上显示该屏幕截图

这是我的服务器代码:

public static void main(String[] args) {
   Thread t = new Thread(new Runnable() {
    @Override
    public void run() {
     try {
      ServerSocket server = new ServerSocket(400);
      System.out.println("Running.....");
      while (true) {
       Socket serverSockt = server.accept();
       System.out.println("Accept.....");

       Toolkit toolKit = Toolkit.getDefaultToolkit();
       Dimension dimension = toolKit.getScreenSize();
       Robot robot = new Robot();
       BufferedImage screenshot = robot.createScreenCapture(new Rectangle(dimension));
       ImageIcon icon = new ImageIcon(screenshot);

       ObjectOutputStream oos = new ObjectOutputStream(serverSockt.getOutputStream());
       oos.writeObject(icon);
       oos.flush();
       oos.close();

       serverSockt.close();
      }
     } catch (IOException ex) {
      Logger.getLogger(VNCserver.class.getName()).log(Level.SEVERE, null, ex);
     } catch (AWTException ex) {
      Logger.getLogger(VNCserver.class.getName()).log(Level.SEVERE, null, ex);
     }
    }
   });
   t.start();
  }
此客户端代码(android):


我不知道哪里出了问题,我没有得到IOException错误,我的第一个想法是可能我的客户机接收到了空的输入流。有什么帮助吗?我犯了什么错误?如果我的代码全错了。。然后,我如何让服务器拍摄一个屏幕截图,然后将其发送到android客户端,并在图像视图或画布中显示屏幕截图

你的代码看起来不错。但是您正在尝试从接收到的对象生成位图。但接收到的对象是一个ImageIcon。所以问题是这能做到吗?您应该首先调查接收的对象是否确实等于发送的对象。发送了多少字节?缓冲区中接收到多少字节?我想您的位图现在将有一个空值。
serverSockt.close()。把它放在while循环下面。目前服务器只能处理一个客户端,到时候就会崩溃。我的天。。我错了。为什么把客户端套接字称为服务器套接字?将其命名为客户端套接字。然后你可以把它作为最后一句话。我不是程序员。。嗯,如果你不介意的话,你能告诉我怎么解决问题吗。我是说如何把你说的话变成密码|我问发送了多少字节,接收了多少字节。你应该发现并告诉我。
btnConnect.setOnClickListener(new View.OnClickListener() {
      @Override
      public void onClick(View view) {
       Thread th = new Thread(new Runnable() {


        @Override
        public void run() {
         try {
          Socket clinetSocket = new Socket(txtIP.getText().toString(), Integer.parseInt(txtPort.getText().toString()))

          ObjectInputStream ois = new ObjectInputStream(clinetSocket.getInputStream());

          byte[] buffer = (byte[]) ois.readObject();
          img = BitmapFactory.decodeByteArray(buffer, 0, buffer.length);
          viwe.setImageBitmap(img);

          clinetSocket.close();

         } catch (IOException e) {
          e.printStackTrace();
         } catch (ClassNotFoundException e) {
          e.printStackTrace();
         }
        }
       });
       th.start();
      }
     });