Java Can';t通过套接字在android的图像视图上显示图像
我正在尝试使用Robot类从服务器获取一个屏幕截图,然后将其发送到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
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();
}
});