28. juni 2003 - 13:54Der er
14 kommentarer og 1 løsning
spimpel chat med java
er der en der kendet et godt sted på nettet hvor der er nogle eksempler på hvordan men laver en simpel chat jeg hade en gang en bog der beskrev det men den har jeg desverre ikke mere
det er chat i java jeg mener det behøver bare ikke at væer meget omfattende dokumentation bare lige lidt til at komme i gang med så finde jeg nok ud af resten
Jeg har et eksempel på en meget simpel chat til at ligge, hvis det er noget der har interesse? Eksemplet indeholder: Ingen GUI. Det er "via sockets" (ikke rmi). Man logger ind (valideres op mod db).
Vi lavede det i forbindelse med vores studie, hvor vi skulle lære lidt omkring hvordan man oprettede tråde.
public class chatThread extends Thread { //Serversocket vi skriver til Socket incoming; String brugernavn; String password; server s; //Socket users[]; //int i;
catch(Exception exc){System.out.println("Error!!!...efter while i thread:"+ exc.toString());} }
public void chat(DataInputStream in, PrintStream out) { out.println("true"); //Skriver via socket til klient at han er valideret, således klient går ind i chat metoden System.out.println(brugernavn +" er logget på");//Udskiver brugernavn out.println(brugernavn +" er logget på");//Skriver brugernavn til socket
//Modtag input fra server til forbindelse lukkes boolean finished = true; while(finished) { try { String besked = in.readLine();
//Skriver på server System.out.println(besked);
for (int x=0; x<s.i; x++) { //System.out.println(users[x]); out= new PrintStream(s.users[x].getOutputStream()); out.println(besked); } }
klient() { try { //Åbner socket til serveren socket = new Socket("127.0.0.1", 8205); //Åbner for modtagelse fra serveren //inStream = new BufferedReader(new InputStreamReader(socket.getInputStream())); inStream = new DataInputStream(socket.getInputStream()); //Åbner for sending til serveren outStream = new PrintStream(socket.getOutputStream());
public void validering(klient k) { boolean notValideret = true;
while(notValideret) { try { System.out.println(inStream.readLine());//Udskriver teks (der er forbindelse til server System.out.println(inStream.readLine());//server spørger efter brugernavn k.in = new BufferedReader(new InputStreamReader(System.in));//keyboard aktiveret k.outStream.println(k.in.readLine());//skriver brugernavn til socket System.out.println(inStream.readLine());//server spørger efter password k.outStream.println(k.in.readLine());//skriver password til socket String StringNotValideret = inStream.readLine();//læser fra socket om klient er validere (true/false)
if (StringNotValideret.equals("true"))//Klient valideret { System.out.println(inStream.readLine());//udskriver at klient er logget på notValideret=false; k.chat(k); } else if (StringNotValideret.equals("false"))//Klient ikke valideret { System.out.println("Forkert brugernavn eller password, genstart klienten...."); System.exit(0); } } catch(Exception e){System.out.println("Error!!!....:"+e.toString());} }
}
public void chat(klient k) { boolean chat= true;
chatRead cr = new chatRead(k); cr.start();
while(chat) { try { //Skriver til server k.in = new BufferedReader(new InputStreamReader(System.in)); String tast = k.in.readLine(); k.outStream.println(tast);
//Modtager fra server //System.out.println(inStream.readLine()); } catch(Exception e){System.out.println("Error!!!....:"+e.toString());} } }
public static void main(String args[]) { klient k = new klient(); k.validering(k); } }
chatRead.java (tråd der oprettes når klient starter - lytter på om der sendes noget fra serveren, dvs. hvis andre klienter har skrevet noget og trykke enter for at "broadcaste" det)
while (rs.next()) //hvis der er mere data i databasen { bn=rs.getString("Brugernavn"); //hentes data fra databasen vha. get-metoder System.out.println(bn); } dbConnection.close(); } catch(Exception e){System.out.println("Fejl i Db.java i metoden TjekKlient.... "+e);}
Hej fun22 Har du oprettet en ServerDB (odbc) indeholdende tabellen Brugertabel med felterne brugernavn og Password? Hvis du har det, så prøv i første omgang både at køre serveren og klienten på samme maskine - localhost (127.0.0.1)
I ovenstående tilfælde brugte jeg vist en MS-Access db. Der skal laves en JDBC-ODBC bro i windows - se hvordan du gør det her: http://javabog.dk/OOP/kapitel20.jsp
Har du selv lavet en GUI til siden du benytter en applet? Mit eksempel ovenfor er uden GUI - det skal eksekveres i en dos-promt: javac *.java java Server java klient
Hvis du ikke har arbejdet med java før denne tråd, så er det nok lidt uoverskueligt at kaste sig ud i. Men hvis du vil igang med java, så kunne det jo være et mål for dig at ende med et hjemmestrikket chat-program - med tilhørende gui.
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.