PhilippGer
Mitglied
Hi!
Ich soll für die Uni ein kleines Programm schreiben, dass mit Sockets arbeitet.
EIn Client schickt zwei Double-Zahlen an den Server und dieser berechnet das Produkt und sendet es an den Client zurrück.
Ansich eine einfache Sache, allerdings bekomme ich einen Fehler bei meinem Programm den sich weder ich selbst noch meine Übungsleiter in der Uni erklären konnten.
Der Server startet soweit gut, aber sobald ich einen Clienten starte, schmeißt der Server eine Fehlermeldung.
Diese Fehlermeldung wird beim Erzeugen des Input-Streams des Servers geworfen.
Hat jemand eine Ahnung was das sein könnte?
Client:
Server:
Ich soll für die Uni ein kleines Programm schreiben, dass mit Sockets arbeitet.
EIn Client schickt zwei Double-Zahlen an den Server und dieser berechnet das Produkt und sendet es an den Client zurrück.
Ansich eine einfache Sache, allerdings bekomme ich einen Fehler bei meinem Programm den sich weder ich selbst noch meine Übungsleiter in der Uni erklären konnten.
Der Server startet soweit gut, aber sobald ich einen Clienten starte, schmeißt der Server eine Fehlermeldung.
Code:
java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(Unknown Source)
at java.io.ObjectInputStream$PeekInputStream.read(Unknown Source)
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 MulServer.<init>(MulServer.java:33)
at MulServer.main(MulServer.java:63)
Diese Fehlermeldung wird beim Erzeugen des Input-Streams des Servers geworfen.
Hat jemand eine Ahnung was das sein könnte?
Client:
Code:
import java.awt.BorderLayout;
import java.awt.List;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import javax.swing.JFrame;
import javax.swing.JPanel;
public class MulClient {
private static String url = "";
private static Integer port = 13457;
private List list;
public MulClient( Double a,Double b,Integer port){
this.port = port;
try{
Socket client = new Socket(url, port);
writeGUI("start");
ObjectInputStream read = new ObjectInputStream (client.getInputStream());
ObjectOutputStream writer = new ObjectOutputStream( client.getOutputStream() );
writeGUI("erste Zahl");
writer.writeDouble(a);
writer.flush();
writeGUI("zweite Zahl");
writer.writeDouble(b);
writer.flush();
client.wait(5000);
Double e = read.readDouble();
writeGUI("Ergebnis empfangen");
writeGUI(a + " x " + b + " = " + e);
client.close();
}catch(IOException e){
System.out.println("1");
e.printStackTrace();
} catch (InterruptedException e) {
System.out.println("warten-fehler");
e.printStackTrace();
}
}
public static void main(String[] args) {
new MulClient( 1.0, 2.0, 3412);
}
public void draw(){
JFrame frame = new JFrame("Client");
JPanel pane = new JPanel();
pane.setLayout( new BorderLayout() );
pane.setPreferredSize(new java.awt.Dimension(500, 400));
this.list = new List();
pane.add(list);
frame.setContentPane(pane);
frame.pack();
frame.setVisible(true);
}
public void writeGUI(String s){
this.list.add(s);
}
}
Server:
Code:
import java.awt.BorderLayout;
import java.awt.List;
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 javax.swing.JFrame;
import javax.swing.JPanel;
public class MulServer {
private static Integer port = 13457;
private static ServerSocket server;
private List list;
public MulServer(Integer port){
draw();
this.port = port;
writeGUI("Port: "+port);
try{
server = new ServerSocket(port);
writeGUI("Server:\thorcht...");
Socket con = server.accept();
writeGUI("Server:\tVerbindung empfangen");
ObjectInputStream read = new ObjectInputStream(con.getInputStream());
ObjectOutputStream write = new ObjectOutputStream(con.getOutputStream());
writeGUI("Warten auf Zahl 1");
Double a = read.readDouble();
writeGUI(a+" empfangen");
writeGUI("Warten auf Zahl 2");
Double b = read.readDouble();
writeGUI(b+" empfangen");
Double e = a*b;
writeGUI(e+" berechnet");
write.writeDouble(e);
writeGUI("Server:\t Ergebnis versendet");
server.close();
}catch(IOException e){
System.out.println("Error 2");
System.out.println(e.toString()+"\n\n");
e.printStackTrace();
}finally{
try {
this.server.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
new MulServer(3412);
}
public void draw(){
JFrame frame = new JFrame("Server");
JPanel pane = new JPanel();
pane.setLayout( new BorderLayout() );
pane.setPreferredSize(new java.awt.Dimension(300, 300));
this.list = new List();
pane.add(list);
frame.setContentPane(pane);
frame.pack();
frame.setVisible(true);
}
public void writeGUI(String s){
this.list.add(s);
}
}