Hallo Ihr da draußen, ich habe einige Schwierigkeiten beim Lesen des Codes.
Den habe ich in einem 'alten' Ordner gefunden und würde gerne wissen was passiert. Ein paar sachen habe ich bereits rausgefunden, aber der Rest ist mir nicht schlüssig...
Es geht darum einen Server anzupeilen...man gibt die Adresse und den Port ein. Warum wird aber der String in einen charArray umgewandelt? muss das sein?
Den habe ich in einem 'alten' Ordner gefunden und würde gerne wissen was passiert. Ein paar sachen habe ich bereits rausgefunden, aber der Rest ist mir nicht schlüssig...
Es geht darum einen Server anzupeilen...man gibt die Adresse und den Port ein. Warum wird aber der String in einen charArray umgewandelt? muss das sein?
Java:
class Client {
public static void main(String[] args) {
try {
// Anfang Eingabe
String adresse;
System.out.print("Adresse mit Port eingeben: ");
BufferedReader adresseR = new BufferedReader(new InputStreamReader(
System.in));
adresse = adresseR.readLine(); // Eingabe auf Adresse
char[] c;
c = adresse.toCharArray(); // String in CharArray umwandeln
String puffer = "";
String method = "";
String urlpuff = "";
int v = adresse.length(); // Laenge des Strings
int x = 0;
// Methode auslesen (String bis zum ersten Leerzeichen)
for (int i = 0; i < v; i++) {
if (c[i] != ' ') {
puffer = puffer + String.valueOf(c[i]);
} else {
method = puffer;
x = i;
}
}
puffer = "";
// URL auslesen
for (int i = (x + 1); i < v; i++) {
puffer = puffer + String.valueOf(c[i]);
}
urlpuff = puffer;
URL host = new URL(urlpuff);
// Zerlegung der URL
String host1 = host.getHost();
String protocol = host.getProtocol();
String path = host.getPath();
int port = host.getPort();
if (port < 0)
port = 80; // fuer den Fall dass Port nicht angegeben wird ist er 80
System.out.println(path);
if (path.isEmpty()) {
path = "/";
}
// Anfang Kontrollausgabe
System.out.println(method);
System.out.println(protocol);
System.out.println(host1);
System.out.println(port);
System.out.println(path);
// if (path==null){path= "/index.html";}
// Ende Kontrollausgabe
// Ende Eingabe
// Verbindungsaufbau
Socket socket = new Socket(host1, port);
// "Kanal" zum Server
OutputStream out = socket.getOutputStream();
OutputStreamWriter out2 = new OutputStreamWriter(out);
PrintWriter out1 = new PrintWriter(out2);
System.out.println("vor der anfrage");
// Anfrage an den Server
System.out.println(method + ' ' + path + ' ' + protocol);
System.out.println("Host: " + host1);
out1.print(method + ' ' + path + ' ' + protocol + "\r\n");
out1.print("Host: " + host1 + "\r\n" + "\r\n");
// out1.println("test");
System.out.println("vor flush");
out1.flush(); // startet Uebertragung
// mit BR Antwort vom Server puffern und an s uebergeben
BufferedReader in = new BufferedReader(new InputStreamReader(
socket.getInputStream()));
String s = in.readLine();
// Abfangen der Codes und sinnvolles Kommentar dazu
if (s.contains("200")) {
System.out.println("\r\n" + "Alles ist gut.");
}
if (s.contains("400")) {
System.out.println("\r\n" + "Syntaktisch falsche Eingabe.");
}
if (s.contains("404")) {
System.out.println("\r\n" + "Datei nicht gefunden.");
}
if (s.contains("501")) {
System.out.println("\r\n" + "Serverfehler.");
}
System.out.println();
System.out.println();
// Ausgabe der ersten Zeile
System.out.println(s);
// Ausgabe alller weiteren
while ((s = in.readLine()) != null)
System.out.println(s);
// socket schliessen
socket.close();
// BufferedReader schliessen
in.close();
}
catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}