C
codemaker
Gast
Folgendes Problem:
Ich versuch ein sichere Server-Client-Vernidung aufzubauen. Da hab ich das nützliche Feature des ClientInputStream bzw ClientOutputStream gefunden. In folgendem kurzem Bsp wird das Problem klar. In Prinzip soll einfach nur eine Textzeile vom auf der Serverseite eingegeben werden. Diese wird dann verschlüsselt an den Client geschickt. Ich will das jetzt aber auf Zeilenbasis in Echtzeit übertragen. Führt man das unter Bsp aus wird nur ab und zu geflusht. Z.b kann dass so aussehen:
Eingabe: Hallo
Eingabe:Hallo!!
Eingabe:1234
Ausgabe:Hallo
Eingabe:Test
Ausgabe:Hallo!!
Eingabe:Mach doch jetzt!!!
Ausgabe:1234
Test
Weiß jemand Rat?
Gruß.
Ich versuch ein sichere Server-Client-Vernidung aufzubauen. Da hab ich das nützliche Feature des ClientInputStream bzw ClientOutputStream gefunden. In folgendem kurzem Bsp wird das Problem klar. In Prinzip soll einfach nur eine Textzeile vom auf der Serverseite eingegeben werden. Diese wird dann verschlüsselt an den Client geschickt. Ich will das jetzt aber auf Zeilenbasis in Echtzeit übertragen. Führt man das unter Bsp aus wird nur ab und zu geflusht. Z.b kann dass so aussehen:
Eingabe: Hallo
Eingabe:Hallo!!
Eingabe:1234
Ausgabe:Hallo
Eingabe:Test
Ausgabe:Hallo!!
Eingabe:Mach doch jetzt!!!
Ausgabe:1234
Test
Weiß jemand Rat?
Gruß.
Java:
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
import javax.crypto.Cipher;
import javax.crypto.CipherInputStream;
import javax.crypto.CipherOutputStream;
import javax.crypto.KeyGenerator;
import javax.crypto.SecretKey;
public class CipherExample extends Thread {
private static SecretKey pass;
public static void main(String[] args) {
try {
KeyGenerator kg = KeyGenerator.getInstance("DES");
kg.init(56);
pass = kg.generateKey();
new CipherExample().start();
ServerSocket ss = new ServerSocket(1010);
Socket s = ss.accept();
Cipher desC = Cipher.getInstance("DES");
desC.init(Cipher.ENCRYPT_MODE, pass);
CipherOutputStream cos = new CipherOutputStream(
s.getOutputStream(), desC);
OutputStreamWriter osw = new OutputStreamWriter(cos);
Scanner sc = new Scanner(System.in);
while (true) {
String line = sc.nextLine();
if (line.equalsIgnoreCase("exit")) {
osw.write(line + "\n");
osw.flush();
break;
} else {
osw.write(line + "\n");
osw.flush();
}
}
sc.close();
osw.close();
ss.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void run() {
try {
Socket s = new Socket("127.0.0.1", 1010);
Cipher desC = Cipher.getInstance("DES");
desC.init(Cipher.DECRYPT_MODE, pass);
CipherInputStream cis = new CipherInputStream(s.getInputStream(),
desC);
Scanner sc = new Scanner(cis);
while (true) {
String line = sc.nextLine();
System.out.println(line);
if (line.equalsIgnoreCase("exit"))
break;
}
sc.close();
s.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
Zuletzt bearbeitet von einem Moderator: