Hallo,
ich brauche eine Server, der bei Bedarf Daten annimmt. Es wird ein Server gestartet und ein Client verbindet sich - das klappt auch alles soweit. jetzt sendet der Client aber nicht sofort Daten, sondern erst wenn er verbunden ist sozusagen bei Bedarf.
Später soll ein KeyEvent übertragen werden, wenn es dann ausgelöst wird - dieses Stück programmcode ist also nur ein test.
Ich habe 2 mal Eclipse laufen und starte dann die jeweiligen methoden: also für den server n.startServer(); und für den client n.openConnection("192.168.0.104"); und anschließend n.sendMoveCommand(2); (2 ist natürlich nur ein Test Integer)
Der Server versucht, wie im Code zu sehen, nachdem er gemerkt hat das ein Client verbunden ist direkt daten von diesem zu empfangen, es werden aber keine gesendet. deswegen gibts auch direkt nen connection reset exception.
Wie macht man sowas ? Die Beispiele die ich gesehen habe, senden direkt nach dem verbinden mit dem Server Daten und der Server empfängt sie. das klappt für mein Beispiel nicht! der Code:
Ich hoffe ihr könnt mir helfen!
Viele Grüße, Tim
ich brauche eine Server, der bei Bedarf Daten annimmt. Es wird ein Server gestartet und ein Client verbindet sich - das klappt auch alles soweit. jetzt sendet der Client aber nicht sofort Daten, sondern erst wenn er verbunden ist sozusagen bei Bedarf.
Später soll ein KeyEvent übertragen werden, wenn es dann ausgelöst wird - dieses Stück programmcode ist also nur ein test.
Ich habe 2 mal Eclipse laufen und starte dann die jeweiligen methoden: also für den server n.startServer(); und für den client n.openConnection("192.168.0.104"); und anschließend n.sendMoveCommand(2); (2 ist natürlich nur ein Test Integer)
Der Server versucht, wie im Code zu sehen, nachdem er gemerkt hat das ein Client verbunden ist direkt daten von diesem zu empfangen, es werden aber keine gesendet. deswegen gibts auch direkt nen connection reset exception.
Wie macht man sowas ? Die Beispiele die ich gesehen habe, senden direkt nach dem verbinden mit dem Server Daten und der Server empfängt sie. das klappt für mein Beispiel nicht! der Code:
Java:
import java.io.*;
import java.net.*;
public class Network_SendReceive {
PrintWriter aus = null; // wird vom Client genutzt
Socket client = null; //wird von Server/Client benutzt
InputStream ein; // wird vom Server benutzt
public void openConnection(String ip) throws UnknownHostException, Exception {
try {
client = new Socket(ip, 10666);
}
catch (UnknownHostException e) {
System.out.println("Unbekannter Server!");
System.exit(0);
}
catch (Exception e) {
System.out.println(
"Verbindung zum Netz existiert nicht \n"
+ e.toString());
System.exit(0);
}
}
public void sendMoveCommand(int richtung) throws Exception {
try {
aus = new PrintWriter(client.getOutputStream(), true);
aus.print(richtung);
}
catch (Exception e) {
System.out.println(e.toString());
}
}
public void closeConnection() throws IOException {
try {
aus.close();
client.close();
}
catch(IOException e) {
e.getStackTrace();
}
}
public void startServer() {
ServerSocket server = null;
int richtung = 0;
try {
server = new ServerSocket(10666);
System.out.println("Warte auf Verbindungsanforderung");
client = server.accept(); // auf Verbindung warten!
ein = client.getInputStream();
System.out.println("Verbunden "+client.isConnected());
while(client.isConnected()) {
richtung = ein.read();
System.out.println("empfangen "+richtung);
}
}
catch (Exception e) {
System.out.println("Fehler beim Öffnen des Ports!");
System.out.println("Fehler beim Verbindungsaufbau!");
e.printStackTrace();
System.exit(0);
}
}
public static void main(String[] args) throws Exception {
Network_SendReceive n = new Network_SendReceive();
n.startServer();
//n.openConnection("192.168.0.104");
//n.sendMoveCommand(2);
//n.closeConnection();
}
}
Ich hoffe ihr könnt mir helfen!
Viele Grüße, Tim
Zuletzt bearbeitet: