Ich bekomme diesen irritierenden Fehler in meinem Zeichenprogramm. Ich erstelle Punkte in einer ArrayList, indem ich Linien zeichne, die dann an meinen Server gesendet werden. Allerdings bekomme ich diesen Fehler. Es ist nicht konsistent, aber ich habe eine Suspendierung passiert, wenn ich nicht zeichne, also sendet der Benutzer keine Punkte an den Server.Ausnahme im Thread "main" java.net.SocketException: Verbindung zurückgesetzt bei java.net.SocketInputStream.read (unbekannte Quelle)
Meine Klasse:
public class TCPClient extends JPanel {
public static ArrayList<Point> location = new ArrayList<>();
private JTextArea consoleOutput = new JTextArea(1,20);
public void addComponentToPane(Container pane) {
consoleOutput.setEditable(false);
}
public TCPClient() {
addMouseListener(new MouseAdapter() {
@Override
public void mousePressed(MouseEvent e) {
location.add(e.getPoint());
}
});
addMouseMotionListener(new MouseMotionAdapter() {
@Override
public void mouseDragged(MouseEvent e) {
location.add(e.getPoint());
repaint();
}
});
setPreferredSize(new Dimension(800, 500));
setBackground(Color.WHITE);
}
@Override
protected void paintComponent(Graphics g) {
super.paintComponent(g);
if(location.isEmpty()){
return;
}
Point p = location.get(0);
for (int i = 1; i < location.size(); i++) {
Point q = location.get(i);
g.drawLine(p.x, p.y, q.x, q.y);
p = q;
}
}
public static void main(String argv[]) throws Exception {
InetAddress SERVERIP = InetAddress.getLocalHost();
JFrame frame = new JFrame("Drawing with friends");
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.add(new TCPClient(), BorderLayout.CENTER);
JTextArea IPadress = new JTextArea(1,20);
IPadress.setEditable(false);
IPadress.append("DEVICE IP: " + SERVERIP.getHostAddress());
frame.add(IPadress, BorderLayout.SOUTH);
frame.setSize(new Dimension(800,600));
frame.setLocationRelativeTo(null);
frame.setResizable(false);
frame.setVisible(true);
try {
while(true) {
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("localhost", 9000);
ObjectOutputStream outToServer = new ObjectOutputStream(clientSocket.getOutputStream());
ObjectInputStream inFromServer = new ObjectInputStream(clientSocket.getInputStream());
outToServer.writeObject(location);
outToServer.flush();
clientSocket.close();
Thread.sleep(1000);
}
} catch (SocketException e) {
}
}
}
Console:
Received: []
Received: [java.awt.Point[x=54,y=127], java.awt.Point[x=55,y=127], java.awt.Point[x=56,y=127], java.awt.Point[x=57,y=127], java.awt.Point[x=58,y=127], java.awt.Point[x=60,y=127], java.awt.Point[x=61,y=127], java.awt.Point[x=64,y=127], java.awt.Point[x=66,y=127], java.awt.Point[x=69,y=127], java.awt.Point[x=73,y=127], java.awt.Point[x=76,y=126], java.awt.Point[x=80,y=126], java.awt.Point[x=84,y=125], java.awt.Point[x=89,y=125], java.awt.Point[x=94,y=124], java.awt.Point[x=99,y=124], java.awt.Point[x=105,y=124], java.awt.Point[x=110,y=124], java.awt.Point[x=115,y=125], java.awt.Point[x=121,y=125], java.awt.Point[x=126,y=126], java.awt.Point[x=131,y=127], java.awt.Point[x=136,y=127], java.awt.Point[x=140,y=128], java.awt.Point[x=144,y=129], java.awt.Point[x=147,y=130], java.awt.Point[x=150,y=130], java.awt.Point[x=153,y=131], java.awt.Point[x=156,y=131], java.awt.Point[x=159,y=132], java.awt.Point[x=162,y=132], java.awt.Point[x=164,y=132]]
Received: [java.awt.Point[x=54,y=127], java.awt.Point[x=55,y=127], java.awt.Point[x=56,y=127], java.awt.Point[x=57,y=127], java.awt.Point[x=58,y=127], java.awt.Point[x=60,y=127], java.awt.Point[x=61,y=127], java.awt.Point[x=64,y=127], java.awt.Point[x=66,y=127], java.awt.Point[x=69,y=127], java.awt.Point[x=73,y=127], java.awt.Point[x=76,y=126], java.awt.Point[x=80,y=126], java.awt.Point[x=84,y=125], java.awt.Point[x=89,y=125], java.awt.Point[x=94,y=124], java.awt.Point[x=99,y=124], java.awt.Point[x=105,y=124], java.awt.Point[x=110,y=124], java.awt.Point[x=115,y=125], java.awt.Point[x=121,y=125], java.awt.Point[x=126,y=126], java.awt.Point[x=131,y=127], java.awt.Point[x=136,y=127], java.awt.Point[x=140,y=128], java.awt.Point[x=144,y=129], java.awt.Point[x=147,y=130], java.awt.Point[x=150,y=130], java.awt.Point[x=153,y=131], java.awt.Point[x=156,y=131], java.awt.Point[x=159,y=132], java.awt.Point[x=162,y=132], java.awt.Point[x=164,y=132], java.awt.Point[x=166,y=133], java.awt.Point[x=168,y=133], java.awt.Point[x=169,y=133], java.awt.Point[x=170,y=133], java.awt.Point[x=172,y=134], java.awt.Point[x=173,y=134], java.awt.Point[x=174,y=134], java.awt.Point[x=175,y=134], java.awt.Point[x=177,y=134], java.awt.Point[x=178,y=134], java.awt.Point[x=179,y=134], java.awt.Point[x=181,y=134], java.awt.Point[x=182,y=134], java.awt.Point[x=184,y=134], java.awt.Point[x=185,y=134], java.awt.Point[x=186,y=134], java.awt.Point[x=188,y=134], java.awt.Point[x=190,y=134], java.awt.Point[x=191,y=134], java.awt.Point[x=193,y=134], java.awt.Point[x=195,y=135], java.awt.Point[x=197,y=135], java.awt.Point[x=199,y=135], java.awt.Point[x=201,y=136], java.awt.Point[x=203,y=136], java.awt.Point[x=204,y=137], java.awt.Point[x=206,y=137], java.awt.Point[x=208,y=138], java.awt.Point[x=210,y=139], java.awt.Point[x=211,y=139], java.awt.Point[x=212,y=139], java.awt.Point[x=212,y=140], java.awt.Point[x=213,y=140], java.awt.Point[x=214,y=141], java.awt.Point[x=215,y=141], java.awt.Point[x=215,y=142], java.awt.Point[x=216,y=142], java.awt.Point[x=216,y=143], java.awt.Point[x=217,y=144], java.awt.Point[x=218,y=145], java.awt.Point[x=220,y=145], java.awt.Point[x=221,y=146], java.awt.Point[x=222,y=147], java.awt.Point[x=223,y=148], java.awt.Point[x=224,y=149], java.awt.Point[x=226,y=150], java.awt.Point[x=227,y=151], java.awt.Point[x=228,y=151], java.awt.Point[x=229,y=152], java.awt.Point[x=231,y=153], java.awt.Point[x=232,y=153], java.awt.Point[x=233,y=154], java.awt.Point[x=234,y=155], java.awt.Point[x=235,y=155], java.awt.Point[x=236,y=155], java.awt.Point[x=237,y=155], java.awt.Point[x=237,y=156], java.awt.Point[x=238,y=156], java.awt.Point[x=239,y=156], java.awt.Point[x=240,y=157], java.awt.Point[x=241,y=157], java.awt.Point[x=242,y=157], java.awt.Point[x=243,y=158], java.awt.Point[x=245,y=158], java.awt.Point[x=246,y=159], java.awt.Point[x=248,y=159], java.awt.Point[x=250,y=160], java.awt.Point[x=252,y=160], java.awt.Point[x=253,y=161], java.awt.Point[x=255,y=161], java.awt.Point[x=256,y=162], java.awt.Point[x=257,y=162], java.awt.Point[x=259,y=162], java.awt.Point[x=261,y=163], java.awt.Point[x=262,y=163], java.awt.Point[x=263,y=163], java.awt.Point[x=264,y=163]]
Exception in thread "main" java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at java.net.SocketInputStream.read(Unknown Source)
at java.io.ObjectInputStream$PeekInputStream.peek(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.peek(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.peekByte(Unknown Source)
at java.io.ObjectInputStream.skipCustomData(Unknown Source)
at java.io.ObjectInputStream.readSerialData(Unknown Source)
at java.io.ObjectInputStream.readOrdinaryObject(Unknown Source)
at java.io.ObjectInputStream.readObject0(Unknown Source)
at java.io.ObjectInputStream.readObject(Unknown Source)
at drawingwf.TCPServer.main(TCPServer.java:26)
Habe ich irgendeine Form von Exception erstellen müssen, oder was würden Sie vorschlagen?
Können Sie versuchen zu schreiben, wie Sie das tun würden? Ich habe versucht, die Streams und Sockets aus der Schleife zu entfernen, aber es endet damit, dass der Server überhaupt nichts empfängt. – WONDERGG