Hey Leute,
ich bin gerade dabei ein kleines Spiel zu programmieren, in das ich auch einen Netzwerkmodus einbauen möchte. Jetzt habe ich mir aber erstmal ein kleines Nebenprojekt gemacht, in der ich überhaupt erstmal die Netzwerkprogrammierung lerne. Ich habe mir durch "Java ist auch eine Insel" und weiteren Seiten jetzt ein kleines Grundwissen angeeignet und kann schon von einem auf einen anderen PC eine Verbindung aufbauen und bei der Verbindung auch InputStream und OutputStream verwenden. Verschicke ich aber per Button nach dem Verbindungsaufbau einen Text (Button "Test senden") sagt er mir hier "Socket is closed". Das gleiche gilt auch für die Server-Seite. Ich habe auch schon versucht den InputStream auf dem Server & den OutputStream auf dem Client vor erst offen zu lassen, dann verheddert er sich aber in einer Endlosschleife.
Hier mal meine 2 Fachklassen, die ich derzeit habe. die GUI schicke ich vorerst mal nicht mit, da diese eigentlich recht irrelevant zum Aufbau ist.
Ich weiß, dass mein Stil noch recht ungeordnet ist, da ich noch Anfänger bin. Vielleicht versteht ihr trotzdem was ich meine und könnt mir helfen. Am liebsten wäre es mir, wenn ihr die "Unordnung" lasst, da es meine zur Zeit noch persönliche Ordnung ist und ich das Thema erstmal auf diese Weise verstehen möchte.
Danke MaxK1990
Klasse 1 (Server):
Klasse 2 (Client):
ich bin gerade dabei ein kleines Spiel zu programmieren, in das ich auch einen Netzwerkmodus einbauen möchte. Jetzt habe ich mir aber erstmal ein kleines Nebenprojekt gemacht, in der ich überhaupt erstmal die Netzwerkprogrammierung lerne. Ich habe mir durch "Java ist auch eine Insel" und weiteren Seiten jetzt ein kleines Grundwissen angeeignet und kann schon von einem auf einen anderen PC eine Verbindung aufbauen und bei der Verbindung auch InputStream und OutputStream verwenden. Verschicke ich aber per Button nach dem Verbindungsaufbau einen Text (Button "Test senden") sagt er mir hier "Socket is closed". Das gleiche gilt auch für die Server-Seite. Ich habe auch schon versucht den InputStream auf dem Server & den OutputStream auf dem Client vor erst offen zu lassen, dann verheddert er sich aber in einer Endlosschleife.
Hier mal meine 2 Fachklassen, die ich derzeit habe. die GUI schicke ich vorerst mal nicht mit, da diese eigentlich recht irrelevant zum Aufbau ist.
Ich weiß, dass mein Stil noch recht ungeordnet ist, da ich noch Anfänger bin. Vielleicht versteht ihr trotzdem was ich meine und könnt mir helfen. Am liebsten wäre es mir, wenn ihr die "Unordnung" lasst, da es meine zur Zeit noch persönliche Ordnung ist und ich das Thema erstmal auf diese Weise verstehen möchte.
Danke MaxK1990
Klasse 1 (Server):
Code:
package paketFK;
import java.io.IOException;
import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;
import javax.swing.JOptionPane;
public class Server {
private ServerSocket server;
private Socket client;
private int port;
public Server(int port){
this.port = port;
}
public void serverErstellen(){
try {
server = new ServerSocket(this.port);
client = server.accept();
//JOptionPane.showMessageDialog(null, "Verbindung erfolgreich!");
}
catch (IOException e) {
JOptionPane.showMessageDialog(null, "Server nicht gestartet!");
e.printStackTrace();
}
}
public String update(){
try {
client = server.accept();
InputStream in = client.getInputStream();
StringBuffer buf = new StringBuffer();
int r;
while((r =in.read())!=-1){
buf.append((char)r);
}
String nachricht = buf.toString();
System.out.println("Nachricht:" + nachricht);
in.close();
return nachricht;
}
catch(IOException ex){
System.out.println(ex.getMessage());
System.out.println("Fehlgeschlagen!");
return "Fehlgeschlagen!";
}
}
public void serverStoppen(){
try {
server.close();
JOptionPane.showMessageDialog(null, "Server gestoppt!");
} catch (IOException e) {
}
}
}
Klasse 2 (Client):
Code:
package paketFK;
import java.io.*;
import java.net.Socket;
import javax.swing.JOptionPane;
public class Client {
private String host;
private int port;
private Socket socket;
private InputStream in;
public void verbinden(String host, int port, String name){
try {
this.host = host;
this.port = port;
socket = new Socket( this.host , this.port );
//JOptionPane.showMessageDialog(null, "Verbindung erfolgreich!");
} catch (IOException e) {
JOptionPane.showMessageDialog(null, "Verbindung fehlgeschlagen!");
}
}
public void testSenden(String host, int port, String text){
try{
this.verbinden(this.host, this.port, "");
this.in = socket.getInputStream();
OutputStream out = socket.getOutputStream();
byte data[] = text.getBytes();
out.write(data);
out.close();
System.out.println("Versendet!");
}
catch(IOException ex){
System.out.println(ex.getMessage());
}
}
}