Hallo zusammen,
ich möchte gerne ein kleinen Taschenrechner Programmieren. Nur ganz simpel doch ich schaffe es nicht mal mit Sockets überhaupt Daten zu Lesen und zu schreiben.
Meine Server Klasse sieht wie folgt aus:
In dieser Klasse erstelle ich ein Handler Objekt, was die Arbeit erledigen soll. Dort fehlt nun natürlich noch die ganze Logig, da ich leider schon am senden und empfangen von String scheitere
und der Client:
Kann man sich das irgendwie vernünftig merken wie das mit den InputStreams auf Seiten Server oder Client erstellt wird? Verstehe da gerade nur Bahnhof.
Des weiteren stehe ich gerade vor dem Problem, was ist wenn sich noch ein PC mit meinem Taschenrechner (später) verbindet. Dann treten derzeit doch sämtliche Probleme auf die man auch aus der Parallelen Programmierung only im PC kennt. Sprich ich müsste die run-Methode synchronisieren im Handler oder? Bzw. dafür sorgen das diese Methode immer nur dann betreten werden darf wenn nicht gerade ein anderer Client am werkeln ist ODER?
Mit RMI möchte ich mich auch noch beschäftigen ;-) doch erst einmal noch Sockets halbwegs verstehen ^.^
ich möchte gerne ein kleinen Taschenrechner Programmieren. Nur ganz simpel doch ich schaffe es nicht mal mit Sockets überhaupt Daten zu Lesen und zu schreiben.
Meine Server Klasse sieht wie folgt aus:
Java:
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;
public class A1Server {
public static void main(String[] args) {
ServerSocket serverSocket = null;
Socket client = null;
try {
serverSocket = new ServerSocket(4242);
} catch (Exception e) {
System.out.println("Fehler beim Erzeugen des ServerSockets");
return;
}
while (true) {
try {
client = serverSocket.accept();
if (client.isConnected()) {
System.out.println("Neuer Spieler connected: " + client.getInetAddress());
new A1Handler(client.getInetAddress().getHostName(), client);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
In dieser Klasse erstelle ich ein Handler Objekt, was die Arbeit erledigen soll. Dort fehlt nun natürlich noch die ganze Logig, da ich leider schon am senden und empfangen von String scheitere
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
public class A1Handler extends Thread {
Socket client;
String name;
BufferedReader in;
PrintWriter out;
A1Handler(String name, Socket client) {
this.name = name;
this.client = client;
try {
in = new BufferedReader(new InputStreamReader(client.getInputStream()));
out = new PrintWriter(client.getOutputStream(), true);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
start();
}
public void run() {
try {
System.out.println(in.readLine());
out.write("Test");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
und der Client:
Java:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class A1Client {
public static void main(String[] args) {
System.out.println("Bitte geben Sie eine Funktion ein wie 2x3");
Socket client = null;
try {
client = new Socket("localhost", 4242);
BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
PrintWriter out = new PrintWriter(new OutputStreamWriter(client.getOutputStream()));
Scanner scanner = new Scanner(System.in);
String tmp = scanner.next();
if (tmp != null) {
out.write(tmp);
} else
System.out.println("Fehler");
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
Kann man sich das irgendwie vernünftig merken wie das mit den InputStreams auf Seiten Server oder Client erstellt wird? Verstehe da gerade nur Bahnhof.
Des weiteren stehe ich gerade vor dem Problem, was ist wenn sich noch ein PC mit meinem Taschenrechner (später) verbindet. Dann treten derzeit doch sämtliche Probleme auf die man auch aus der Parallelen Programmierung only im PC kennt. Sprich ich müsste die run-Methode synchronisieren im Handler oder? Bzw. dafür sorgen das diese Methode immer nur dann betreten werden darf wenn nicht gerade ein anderer Client am werkeln ist ODER?
Mit RMI möchte ich mich auch noch beschäftigen ;-) doch erst einmal noch Sockets halbwegs verstehen ^.^