Hey Leute. Ich habe eine Frage und zwar;
Wir sollen in der Schule eine Chatprogramm schreiben. Wo der Server mehrere Clients annimmt, so wie das bei einem Chat üblich ist.
Meine Idee war es, alles via Console zu machen, da ich nicht, wie alle anderen eine oberfläche haben wollte.
Das momentane Problem ist nur, dass ich, wenn mehrere Clients joinen, dass dann jeder natürlich nur seine eigene Console hat, aber nicht das von den anderen sieht (also das geschriebene); kann man irgendwie die consolen zusammen legen? ; beziehungsweise das jewails geschriebene an einen anderen client schicken?
Ich zeige euch hier mal meinen Quellcode. Vielleicht oder sicherlich habt ihr so einige Verbesserungsvorschläge. (Bitte nicht lachen, ist eins meiner ersten, richtigen, eigenen Schulprojekte.) Bin aber bereit zu lernen!
Hier seht ihr zuerst die Server Klasse:
Und hier die des Clients.
Ich wäre euch dankbar, wenn man mir dabei helfen könnte. (Ich weiß, es sind noch weitaus mehr Fehler drin, die man verändern könnte. - Aber gut wäre es, erst einmal das eine hinzubekommen. ~ danach kann ich mich noch den anderen Sachen widmen.
PS: Jeder hat mal klein Angefangen!
Vielen dank für die Hilfe.
Wir sollen in der Schule eine Chatprogramm schreiben. Wo der Server mehrere Clients annimmt, so wie das bei einem Chat üblich ist.
Meine Idee war es, alles via Console zu machen, da ich nicht, wie alle anderen eine oberfläche haben wollte.
Das momentane Problem ist nur, dass ich, wenn mehrere Clients joinen, dass dann jeder natürlich nur seine eigene Console hat, aber nicht das von den anderen sieht (also das geschriebene); kann man irgendwie die consolen zusammen legen? ; beziehungsweise das jewails geschriebene an einen anderen client schicken?
Ich zeige euch hier mal meinen Quellcode. Vielleicht oder sicherlich habt ihr so einige Verbesserungsvorschläge. (Bitte nicht lachen, ist eins meiner ersten, richtigen, eigenen Schulprojekte.) Bin aber bereit zu lernen!
Hier seht ihr zuerst die Server Klasse:
Java:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import javax.imageio.IIOException;
public class Server extends Thread {
public static void main(String args[]) throws IOException {
while (true) {
try {
int txt = 0;
String nickname = null;
ConnectionHandler ch = new ConnectionHandler();
ServerSocket server = new ServerSocket(3162);
Socket client = server.accept();
InputStream in = client.getInputStream();
OutputStream out = client.getOutputStream();
} catch (IOException e) {
// System.out.println("Fehler beim Connecten!");
}
}
Und hier die des Clients.
Java:
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.sql.Array;
import java.util.ArrayList;
import javax.imageio.IIOException;
import javax.swing.JOptionPane;
public class Client {
public static void main(String args[]) throws IOException, IOException {
ArrayList<String> list = new ArrayList<String>();
ConnectionHandler ch = new ConnectionHandler();
Socket server = new Socket("localhost", 3162); // Server Verbinden
InputStream in = server.getInputStream();
OutputStream out = server.getOutputStream();
// Nickname wird abgefragt
String a = JOptionPane.showInputDialog("Nickname eingeben");
String nickname = a;
namenswahl(list,a);
System.out.println(nickname + " ist beigetreten.");
schreiben(nickname);
System.out.println(nickname + " hat den Chat verlassen.");
}
// Methoden.
public static void schreiben(String nickname) throws IOException {
ConnectionHandler ch = new ConnectionHandler();
String text = "";
byte[] b = new byte[1024];
System.in.read(b);
for (int i = 0; i < b.length; i++) {
if (b[i] == '*')
return;
text = text + (char) b[i] + "";
}
sendString(nickname,null);
sendString(text, null);
System.out.println(nickname + " schreibt: " + text);
schreiben(nickname);
}
public static void namenswahl(ArrayList list , String a)throws IOException{
for (int i = 0; i < list.size(); i++) {
if (a != list.get(i)) {
list.add(a);
} else {
System.out
.println("Ein User mit diesem Nickname ist bereits online!");
namenswahl(list, a);
}
}
}
public static void sendString(String send, OutputStream out) throws IOException {
byte[] senden = send.getBytes();
out.write(senden);
}
}
Ich wäre euch dankbar, wenn man mir dabei helfen könnte. (Ich weiß, es sind noch weitaus mehr Fehler drin, die man verändern könnte. - Aber gut wäre es, erst einmal das eine hinzubekommen. ~ danach kann ich mich noch den anderen Sachen widmen.
PS: Jeder hat mal klein Angefangen!
Vielen dank für die Hilfe.