Socket Client - Server Problem

Jundi

Mitglied
Hallo,
ich bin noch ein Java Anfänger und möchte ein Programm schreiben, dass Zahlen auf einem Server ausrechnet und zurück sendet.
Wenn ich meinen Client Code in der main Methode ausführe funktioniert die Berechnung, wenn ich jedoch meine Daten in der Methode connect() stehen habe, connected mein programm zum Server, aber die Berechnung funktioniert nicht.
Komme einfach nicht drauf was hier noch fehlt.

[Java] public void connect() {
Socket server = null;
try
{
server = new Socket();
InputStream in = server.getInputStream();
OutputStream out = server.getOutputStream();
out.write( 4 );
out.write( 9 );
int result = in.read();
System.out.println( result );
}
catch ( UnknownHostException e ) {
e.printStackTrace();
}
catch ( IOException e ) {
e.printStackTrace();
}
finally
{
if ( server != null )
try { server.close(); } catch ( IOException e ) { e.printStackTrace(); }
}
}

public static void main(String[] args) throws UnknownHostException, IOException {
new GUI().setVisible(true);
server = new Socket("localhost", 9998);


}
}[/code]
 
S

SlaterB

Gast
die Methode connect() wird nie ausgefüht?

wobei, selbst wenn sie aufgerufen wird, ergibt sie wenig Sinn,
die lokale Variable server aus der main-Methode wird dort ja kaum verwendet,
stattdessen
> server = new Socket();
was weder als Server noch als Client irgendwie hilft?
 

Jundi

Mitglied
Vielen Dank, hatte vergessen die Methode Connect aufzurufen.

Nun kann ich meine Werte an den Server senden und der berechnet sie auch, nur wenn ich jetzt die Daten wieder an den Client zurück sende kommt nichts an.
Irgendwas stimmt mit dem OutputStream vom Server, oder InputStream vom Client nicht.

Wenn da jemand vielleicht weiter weiß.


Coding GUI Client - ( die Methode connect() ist ganz unten)

Java:
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.InputEvent;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.print.PrinterException;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

import javax.swing.*;

/**
 * 
 * @author Toni
 */
public class GUI extends JFrame {

	private static final long serialVersionUID = 1L;
	private JButton activateButton;
	private JButton activateEditButton;
	private JTable table; // wird bisher nicht benutzt
	public static String path = "";
	public static String fileName = "";
	final JTextField jtf2, jtf3, jtf4, jtf5;
	public JPanel kk;
	Button funktion;
	Color background = new Color(240, 220, 255);
	public static double[] a = new double[4];
	public static boolean zeichne = false;
	public JButton jb1;
	public static double[] ergebnis = new double[21];
	public static double[] test = new double[4];

	Coord cd = new Coord();

	/*
	 * private int narray = Integer.parseInt(JOptionPane
	 * .showInputDialog("Größe der Matrix angeben")); private double[][] matrix
	 * = new double[narray][narray];
	 */

	public GUI() {
		setTitle("Differentialgleichungssystem 1. Ordnung");
		setLocation(50, 50);
		setPreferredSize(new Dimension(700, 900));

		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		addWindowListener(new WindowAdapter() {

			@Override
			public void windowClosing(WindowEvent we) {
				int arg = JOptionPane.showConfirmDialog(null,
						"Möchten sie das Programm wirklich beenden?",
						"Wirklich beenden?", JOptionPane.YES_NO_OPTION);
				if (arg == 0) {
					System.exit(0);
				}
			}
		});

		JMenuBar jmb = new JMenuBar();
		JMenu jmd = new JMenu("Datei");

		JMenuItem jmid2 = new JMenuItem("Drucken", new ImageIcon(
				"images/print.gif"));
		jmid2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P,
				InputEvent.CTRL_MASK));
		jmid2.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				try {
					table.print();
				} catch (PrinterException ex) {
					ex.getStackTrace();
				}
			}
		});

		JMenuItem jmid1 = new JMenuItem("Exit",
				new ImageIcon("images/exit.gif"));
		jmid1.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				System.exit(0);
			}
		});

		jmd.add(jmid2);
		jmd.addSeparator();
		jmd.add(jmid1);
		jmb.add(jmd);

		JMenu jmh = new JMenu("Hilfe");
		JMenuItem jmih1 = new JMenuItem("Hilfe", new ImageIcon(
				"images/help.gif"));
		JMenuItem jmih2 = new JMenuItem("Informationen über das Projekt ",
				new ImageIcon("images/info.png"));
		jmh.add(jmih1);
		jmh.add(jmih2);

		jmb.add(jmh);
		this.setJMenuBar(jmb);

		// Fenster Layout

		final JPanel centerPanel = new JPanel();
		centerPanel.setLayout(new GridBagLayout());

		add(centerPanel, BorderLayout.NORTH);

		GridBagConstraints c = new GridBagConstraints();
		setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE);
		addWindowListener(new WindowAdapter() {

			@Override
			public void windowClosing(WindowEvent arg0) {
				int arg = JOptionPane.showConfirmDialog(null,
						"Wollen Sie wirkliche Beenden?", "Wirklich abbrechen?",
						JOptionPane.YES_NO_OPTION);
				if (arg == 0) {
					dispose();
					activateButton.setEnabled(true);
					activateEditButton.setEnabled(true);
				}
			}
		});

	
		c.insets = new Insets(10, 10, 0, 10);
		c.anchor = GridBagConstraints.WEST;
		c.gridy = 3;
		c.gridx = 0;
		JLabel jl5 = new JLabel("Matrix:");
		centerPanel.add(jl5, c);

		c.anchor = GridBagConstraints.WEST;
		c.gridy = 3;
		c.gridx = 1;
		jtf2 = new JTextField(5);
		centerPanel.add(jtf2, c);

		c.anchor = GridBagConstraints.WEST;
		c.gridy = 3;
		c.gridx = 2;
		jtf3 = new JTextField(5);
		centerPanel.add(jtf3, c);

		c.anchor = GridBagConstraints.WEST;
		c.gridy = 4;
		c.gridx = 1;
		jtf4 = new JTextField(5);
		centerPanel.add(jtf4, c);

		c.anchor = GridBagConstraints.WEST;
		c.gridy = 4;
		c.gridx = 2;
		jtf5 = new JTextField(5);
		centerPanel.add(jtf5, c);

		c.anchor = GridBagConstraints.WEST;
		c.gridy = 5;
		c.gridx = 0;
		JButton jb3 = new JButton("Berechnen");

		jb3.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				try {
					a[0] = (Double.parseDouble(jtf2.getText()));
					a[1] = (Double.parseDouble(jtf3.getText()));
					a[2] = (Double.parseDouble(jtf4.getText()));
					a[3] = (Double.parseDouble(jtf5.getText()));
					connect();

				} catch (Exception ex) {
					JOptionPane.showMessageDialog(centerPanel,
							"Bitte Werte eingeben");

				}
				if (a[0] == a[3] && a[1] == a[2])
					;
				// ergebnis = Calc.werte();
				else {
					JOptionPane.showMessageDialog(centerPanel,
							"Symmetrische Matrix eingeben");
				}
			}
		});
		centerPanel.add(jb3, c);

		c.anchor = GridBagConstraints.WEST;
		c.gridy = 5;
		c.gridx = 1;
		jb1 = new JButton("zeichnen");

		jb1.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {
				zeichne = true;
				repaint();
			}
		});

		centerPanel.add(jb1, c);

		c.anchor = GridBagConstraints.WEST;
		c.gridy = 5;
		c.gridx = 3;
		JButton jb4 = new JButton("Löschen");

		jb4.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent e) {

				jtf2.setText("");
				jtf3.setText("");
				jtf4.setText("");
				jtf5.setText("");
				cd.removeAll();
				cd.repaint();

			}
		});

		centerPanel.add(jb4, c);

		c.anchor = GridBagConstraints.WEST;
		c.gridwidth = 1;
		c.gridy = 5;
		c.gridx = 4;
		JButton jb5 = new JButton("Beenden");
		jb5.addActionListener(new ActionListener() {

			public void actionPerformed(ActionEvent arg0) {
				int arg = JOptionPane.showConfirmDialog(null,
						"Wollen Sie wirklich Beenden?", "Beenden",
						JOptionPane.YES_NO_OPTION);
				if (arg == 0) {
					dispose();
					activateButton.setEnabled(true);
					activateEditButton.setEnabled(true);
				}
			}
		});
		centerPanel.add(jb5, c);

		c.anchor = GridBagConstraints.WEST;
		c.gridy = 10;
		c.gridx = 0;
		c.gridwidth = GridBagConstraints.REMAINDER;
		c.fill = GridBagConstraints.HORIZONTAL;

		// JPanel für Koordinatensystem
		kk = new JPanel();
		kk.setPreferredSize(new Dimension(300, 250));

		centerPanel.add(kk, c);
		kk.add(cd);
		add(cd, BorderLayout.WEST);

		super.pack();

	}

	public void connect()  {
		Socket client = null;
		try {
			client = new Socket("localhost", 9998);

			DataOutputStream out = new DataOutputStream(client.getOutputStream());
			DataInputStream in =  new DataInputStream(client.getInputStream());
			
			out.writeDouble(a[0]);
			out.writeDouble(a[1]);
			out.writeDouble(a[2]);
			out.writeDouble(a[3]);
			
			out.close();

			test[0] = in.readDouble();
			test[1] = in.readDouble();
			test[2] = (in.readDouble());
			test[3] = (in.readDouble()); 
			
			System.out.println("Test"+test[0]);
		
			
			in.close();
			
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		} finally {
			if (client != null)
				try {
					client.close();
				} catch (IOException e) {
					e.printStackTrace();
				}
		}
	}

	public static void main(String[] args) {
		new GUI().setVisible(true);
		

	}


Und hier noch mein Server - hier wird wohl ganz unten handleConnection() relevant sein

[Java]import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;

/**
*
* @author Toni
*/
public class Server extends JFrame {

private static final long serialVersionUID = 1L;
static int portnumber = 9998;
ServerSocket ss;
public static double[] b = new double[4];
public static double[] ergebnis = new double[21];

public Server() {
this.setTitle("Server - Diff. Gleichungssystem ");
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
this.setLayout(new BoxLayout(this.getContentPane(), BoxLayout.Y_AXIS));
this.setLocationRelativeTo(null);
this.add(new JLabel("Server gestartet"));
this.setSize(380, 280);
this.setVisible(true);
try {

new Thread(new Runnable() {

public void run() {
try {
startServer();
} catch (Exception ex) {
ex.printStackTrace();
}
}
}).start();
add(new JLabel("Aktiv auf Port " + portnumber));
this.validate();
this.repaint();
Thread.sleep(1000);

final JButton b = new JButton("Stop");

b.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

new Thread(new Runnable() {

public void run() {
try {
b.setEnabled(false);
add(new JLabel("Schließe Port " + portnumber));
validate();
repaint();
Thread.sleep(1000);
stopServer();
add(new JLabel("Server ist offline!"));
add(new JLabel("Schließe in 3 Sekunden"));
validate();
repaint();
Thread.sleep(1500);
dispose();
} catch (Exception ex) {
}
}
}).start();
}
});
this.add(b);
this.validate();
this.repaint();

} catch (InterruptedException ex) {
Logger.getLogger(Server.class.getName())
.log(Level.SEVERE, null, ex);
}
}

public void startServer() {
try {
ss = new ServerSocket(portnumber);
System.out.println(ss.getLocalSocketAddress().toString());
while (!ss.isClosed()) {
Socket client = ss.accept();
handleConnection(client);

}
} catch (Exception e) {

}
}

public void stopServer() {
try {
ss.close();
} catch (IOException ex) {
Logger.getLogger(Server.class.getName())
.log(Level.SEVERE, null, ex);
}
}

public void handleConnection(Socket client) throws IOException {
DataInputStream in = new DataInputStream(client.getInputStream());
DataOutputStream out = new DataOutputStream(client.getOutputStream());

b[0] = (in.readDouble());
b[1] = (in.readDouble());
b[2] = (in.readDouble());
b[3] = (in.readDouble());
ergebnis = Calc.werte();
System.out.println("vor out"+ergebnis[0]);

out.writeDouble(ergebnis[0]);
out.writeDouble(ergebnis[1]);
out.writeDouble(ergebnis[2]);
out.writeDouble(ergebnis[3]);

System.out.println("Läuft bis hier durch? - ja ");

// ss.close();
in.close();
// out.close();
}

public static void main(String[] args) {
new Server();

}
}
[/code]

Danke schon Mal im voraus
 
Zuletzt bearbeitet:
S

SlaterB

Gast
out.flush();

(Daten aus internen Puffern senden)

mit out.close() beim Client wäre ich vorsichtig,
kann ruhig offen bleiben bis alles fertig ist, flush() reicht,
aber wenn es funktioniert, dann vielleicht ok
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Server-Client IO Problem Netzwerkprogrammierung 6
A Problem beim Senden von Client zu Server Netzwerkprogrammierung 10
B Client/Server Connection Problem Netzwerkprogrammierung 2
M Problem Client - Server Sockets: .ready() wird nie true! Netzwerkprogrammierung 6
X Problem mit Server-Client-Kommunikation Netzwerkprogrammierung 14
K Client - Server Problem Netzwerkprogrammierung 16
T RMI Problem Client-Server Netzwerkprogrammierung 2
D Client Server Problem, Methode readline() löst SocketException "Connection reset" aus Netzwerkprogrammierung 8
J Client server problem Netzwerkprogrammierung 3
S Problem bzgl. Sockets / Server-Client-Struktur Netzwerkprogrammierung 3
N Socket Java server c# client problem Netzwerkprogrammierung 7
K Problem Performance Client-Server Netzwerkprogrammierung 5
W Problem mit Server/Client mit ObjectOutputStream Netzwerkprogrammierung 5
S Client-Server Chat Problem nur im lokalen Netztwerk Netzwerkprogrammierung 23
K Client-Server Problem Netzwerkprogrammierung 2
G Problem mit Client-Server Kommunikation Netzwerkprogrammierung 4
S Client/Server Problem Netzwerkprogrammierung 2
A Client Server Problem Netzwerkprogrammierung 37
G Problem bei Objekt senden von server zu client Netzwerkprogrammierung 6
L ganz ganz einfach Client/Server [Problem] Netzwerkprogrammierung 2
R Java Applikation als Client ,Servlet als Server: Problem? Netzwerkprogrammierung 3
V Client Server Problem, empängt oder sendet nichts Netzwerkprogrammierung 4
M HttpUrlConnection + Client/Server Problem Netzwerkprogrammierung 2
S Problem mit der Client Server Netzwerkprogrammierung 6
S Habe ein Problem mit Sockets -> Client Server Netzwerkprogrammierung 2
G Datenautausch Client/Server , hab da ein kleines problem Netzwerkprogrammierung 3
I Performanteste Kommunikationsmethode zwischen Client u. Server Netzwerkprogrammierung 4
L Socket Automatische Zuweisung von Server und Client Rolle Netzwerkprogrammierung 12
ExceptionOfExpectation Server/Client-Kommunikation Netzwerkprogrammierung 34
M Server-Client-System für Browsergame Netzwerkprogrammierung 5
Yonnig Threads mit Client/Server und GUI (laufend bis button-click) Netzwerkprogrammierung 9
J Client-Server und SOAP Netzwerkprogrammierung 23
L30nS RMI Aufruf einer Client-Methode von einem RMI-Server Netzwerkprogrammierung 3
T String von Client zu Server kommt nicht an Netzwerkprogrammierung 92
D WebSocket Server mit HTML Client und Java Server Netzwerkprogrammierung 5
D Server - Client Informationsaustausch, Möglichkeiten Netzwerkprogrammierung 3
H Socket Chat entwickeln mit Java Server Client Netzwerkprogrammierung 4
X Kann ich einen Client/Server verbindung hinkriegen die mir alle paar Sekunden die aktuellen Daten per Realtime zuschickt ? Netzwerkprogrammierung 9
D Slf4j - Logging - Client-Server Architektur Netzwerkprogrammierung 3
J client server mit nur einem PC Netzwerkprogrammierung 33
M Socket Nachricht von TCP-Client an Server schicken Netzwerkprogrammierung 12
M Socket Verbindung Matlab(Server) Java(Client) Netzwerkprogrammierung 1
R Socket FATAL EXCEPTION MAIN bei Socket based client/server app Netzwerkprogrammierung 2
I Socket Das erste Server-Client Programm Netzwerkprogrammierung 16
M Socket Server antwortet dem Client nicht Netzwerkprogrammierung 6
I Client/Server Kommunikation bei einem Spiel Netzwerkprogrammierung 4
E Objekte versenden, Client-Server Netzwerkprogrammierung 25
C Mini Client-Server-Anwendung funktioniert nicht Netzwerkprogrammierung 8
P Server als Client nutzen Netzwerkprogrammierung 8
D Socket Run Args Client/Server Socket Netzwerkprogrammierung 1
Cromewell Socket Multithreaded Server und Client Netzwerkprogrammierung 1
Y Client/Server/DB communication Netzwerkprogrammierung 3
JavaWolf165 Socket mit .writeUtf etwas vom Client zum Server schicken Netzwerkprogrammierung 13
P RMI Client Server Programm über Internet Netzwerkprogrammierung 2
brainless Client Server Kommunikation verschlüsseln Netzwerkprogrammierung 13
gamebreiti Socket Server / Client Anwendung Manipulation von Objekten durch Server Netzwerkprogrammierung 9
T Socket Server/Client Kommunikation Netzwerkprogrammierung 8
F Server Client Anwendung mit UDP Netzwerkprogrammierung 2
A RMI Wo treten Exceptions bei RMI Aufrufen auf? Auf Client oder auf Server? Netzwerkprogrammierung 3
A ByteBuffer - Client/Server Netzwerkprogrammierung 9
K C# Server - Android Client Netzwerkprogrammierung 0
P MIME-TYPE Erklaerung, Kommunikation zwischen Client und Server Netzwerkprogrammierung 3
J Sichere Kommunikation bei Server Client Netzwerkprogrammierung 3
T Frage zu Client-Server Applikation Netzwerkprogrammierung 2
H Socket Client/Server Socket Programmieren Netzwerkprogrammierung 1
M Theoretische Frage zu Server - Client Netzwerkprogrammierung 2
P HTTP Server / Client Netzwerkprogrammierung 1
E Thematik Client server Netzwerkprogrammierung 2
D Client/Server per Crossover Lan Kabel Netzwerkprogrammierung 1
S Client Server Connection Netzwerkprogrammierung 4
V erste Client - Server Anwendung, paar Fragen wie Socketverbindung checken usw. Netzwerkprogrammierung 4
S Sichere Server/Client Architektur Netzwerkprogrammierung 1
D Chat Server/mehre Client Netzwerkprogrammierung 9
I Server+Client Netzwerkprogrammierung 3
N Client am Server abmelden Netzwerkprogrammierung 0
F Server/Client Probleme Netzwerkprogrammierung 3
U Socket Instant Messanger (Server Linux, Client Windows) Netzwerkprogrammierung 1
Athena Grundsatzfragen zu Client-Server-Architektur / Matchmaking Netzwerkprogrammierung 1
F Client Server DB Netzwerkprogrammierung 0
A Verständnisfrage Multi-Threaded Client/Server Netzwerkprogrammierung 5
F Tipps zum Thema Server/Client vie SOAP Netzwerkprogrammierung 0
F Socket Java - Server/Client simple Netzwerkprogrammierung 1
R Zeitliche Syncronisation Server - Client Netzwerkprogrammierung 0
S Server-Client: Image senden Netzwerkprogrammierung 2
C Multithreading Client / Server erklärt Netzwerkprogrammierung 11
P server - client verbindung (anfänger) Netzwerkprogrammierung 8
J Client Server - Serialisierung Netzwerkprogrammierung 8
Luk10 Server / Client: Clients speichern! Netzwerkprogrammierung 6
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
K Client => Server Netzwerkprogrammierung 2
A ? Home-Network, Server/Client-Einrichtung Netzwerkprogrammierung 4
S Socket Server: ConnectionError vom Client erkennen Netzwerkprogrammierung 31
A Java Server - IOS Client Applikation Netzwerkprogrammierung 20
L Ratschlag zur Umsetzung einer client-server-Kommunikation Netzwerkprogrammierung 6
M RMI RMI Probleme zwischen Client und Server Netzwerkprogrammierung 5
J Erster Server-Client läuft auf lokalem Rechner problemlos. Zwei Rechner über das Internet nicht Netzwerkprogrammierung 8
N Client-Server-Datenbank Netzwerkprogrammierung 13
Kjubert Synchronisieren von Objekten über Client/Server - bester Weg? Netzwerkprogrammierung 7
S Server Client Daten hin und herschicken Netzwerkprogrammierung 2
R Server zu Client Kommunikation Netzwerkprogrammierung 11

Ähnliche Java Themen

Neue Themen


Oben