edit # 2: Чак указал на ошибку, поэтому я исправил ее, спасибо, (я запускаю только отправитель изображения один раз) Теперь я получаю только одну ошибку на стороне клиента, если кто-то еще может помочь, хорошо.Если нет, то все еще в порядке, потому что теперь у меня есть только одна ошибка, чтобы исправить, спасибо.
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at Client.run(Client.java:45)
at java.lang.Thread.run(Unknown Source)
Привет, я пытаюсь создать приложение удаленного управления (вроде).
Я пытаюсьчтобы запрограммировать приложение (сервер), которое передает изображение клиенту (с одного компьютера на другой, протестировал его на своем компьютере и на школьной сети)
Я попытался отладить его, и я не понимаю, чтоЯ запрограммирован неправильно.Может кто-нибудь сказать, пожалуйста, что не так с программой?(все это выглядит логически правильным для меня).
Я опубликовал ошибки, которые я получаю, и исходный код ниже
Я вижу окна (на стороне клиента), и в них нет изображениякадр клиента, поэтому я предполагаю, что изображение не было передано.
java.io.StreamCorruptedException: invalid type code: AC
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at Client.run(Client.java:47)
at java.lang.Thread.run(Unknown Source)
, и я получаю много ошибок на стороне сервера (отправляет изображение) (слишком много их всех)одинаковы)
Исключение в теме "Thread-91" Исключение в теме "Thread-69"
Exception in thread "Thread-25"
10Exception in thread "Thread-70"
java.lang.OutOfMemoryError: Java heap space
t sun.awt.windows.WRobotPeer.getRGBPixels(Unknown Source)
at java.awt.Robot.createScreenCapture(Unknown Source)
at ImageSender.run(ImageSender.java:27)
java.lang.OutOfMemoryError: Java heap space
at sun.awt.windows.WRobotPeer.getRGBPixels(Unknown Source)
at java.awt.Robot.createScreenCapture(Unknown Source)
at ImageSender.run(ImageSender.java:27)
java.lang.OutOfMemoryError: Java heap space
at sun.awt.windows.WRobotPeer.getRGBPixels(Unknown Source)
at java.awt.Robot.createScreenCapture(Unknown Source)
at ImageSender.run(ImageSender.java:27)
java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
at sun.awt.windows.WRobotPeer.getRGBPixels(Unknown Source)
3
10
at java.awt.Robot.createScreenCapture(Unknown Source)
at ImageSender.run(ImageSender.java:27)
3Exception in thread "Thread-23"
10
java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
Exception in thread "Thread-19" Exception in thread "Thread-37"
java.lang.OutOfMemoryError: Java heap space
Exception in thread "Thread-29" java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
java.lang.OutOfMemoryError: Java heap space
main:
import java.io.IOException;
public class Main {
private int a;
private Server s;
private Client t;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Main start=new Main();
}
public Main()
{
try {
a=System.in.read();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
a=a-48;
System.out.println(a);
if(a==0)
{
Server s=new Server();
}
else
{
Client t=new Client();
}
}
}
serverотправляет изображение с ImageSender:
import java.awt.AWTException;
import java.awt.Robot;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.net.ServerSocket;
import java.net.Socket;
public class Server extends Thread {
private ServerSocket ssocket;
private Socket connection;
private InputStream in;
private ObjectInputStream out;
private Robot robot;
public Server()
{
try {
robot=new Robot();
} catch (AWTException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Thread t=new Thread(this);
t.start();
}
public void run()
{
try {
ssocket=new ServerSocket(5000);
System.out.println("waiting for connections");
connection=ssocket.accept();
System.out.println("Got connection from"+connection.getInetAddress().getHostName());
System.out.println("2");
while (connection.isConnected()==true)
{
System.out.println("3");
ImageSender sender = new ImageSender(connection);
sender.start();
}
/*
out.close();
in.close();
connection.close();
ssocket.close();
*/
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
ImageSender:
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import javax.swing.ImageIcon;
class ImageSender extends Thread{
Socket connection;
Robot robot; // Used to capture screen
Rectangle rectangle; // Used to represent screen dimensions
ImageSender(Socket sc){
connection=sc;
}
public void run(){
try{
this.robot = new Robot();
Toolkit t=Toolkit.getDefaultToolkit();
Rectangle rect=new Rectangle(t.getScreenSize());
while(true){
System.out.println("10");
OutputStream out=connection.getOutputStream();
ObjectOutputStream oout=new ObjectOutputStream(out);
BufferedImage b_img=robot.createScreenCapture(rect);
ImageIcon img=new ImageIcon(b_img);
System.out.println("12");
oout.writeObject(img);
System.out.println("133");
oout.close();
out.close();
}
}catch(Exception e){System.out.println(e);}
}
}
клиент:
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.net.UnknownHostException;
import javax.swing.ImageIcon;
public class Client extends Frame implements Runnable {
Socket cSocket;
OutputStream out;
ObjectOutputStream oout;
Thread t;
String serverIp;
public Client()
{
Toolkit tk = Toolkit.getDefaultToolkit();
this.setSize(tk.getScreenSize());
this.setExtendedState(Frame.MAXIMIZED_BOTH);
this.setUndecorated(true);
this.serverIp="localhost";
Thread t=new Thread(this);
t.start();
}
@Override
public void run() {
// TODO Auto-generated method stub
try {
cSocket = new Socket(serverIp, 5000);
out=cSocket.getOutputStream();
oout=new ObjectOutputStream(out);
this.setVisible(true);
while(true){
InputStream in=cSocket.getInputStream();
ObjectInputStream oin=new ObjectInputStream(in);
try {
ImageIcon img = (ImageIcon)oin.readObject();
Graphics g=getGraphics();
img.paintIcon(this,g,0,0);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
сильный текст