Zum Inhalt springen

YujiSakaii

Mitglieder
  • Gesamte Inhalte

    12
  • Benutzer seit

  • Letzter Besuch

  1. hi, iwie komm ich mir grad son bisschen vera*scht vor... hab mein abi mit 2,8 gemacht und hab ca. 80 bewerbungen geschrieben ....
  2. So falls es jemanden intressiert kann ich ja mal meinen jetzigen quelltext posten als erstes der Server package Chat; import java.io.*; import java.net.*; import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; public class MultiThreadChatServer { private static Socket clientSocket = null; private static ServerSocket serverSocket = null; private static clientThread t[] = new clientThread[10]; private static FileWriter fw = null; private static PrintWriter pw = null; public static void main(String args[]) { String logspeicher ="C:\\Dokumente und Einstellungen\\test.log"; File file = new File(logspeicher); Calendar cal = Calendar.getInstance(); try { fw = new FileWriter(file.getPath(), true); } catch (IOException ex) { Logger.getLogger(MultiThreadChatServer.class.getName()).log(Level.SEVERE, null, ex); } pw = new PrintWriter( fw ); System.out.println("Geben sie den zu benutzenden Port an"); Scanner scan = new Scanner (System.in); int port_number = scan.nextInt(); System.out.println("Benutze den Java MultiThreadChatServer\nEs wird der Port "+port_number+" benutzt"); pw.printf("<%tT>\n",cal); pw.println("Der Server wurder gestartet"); try { //Erstelle Socket auf Port 2222 serverSocket = new ServerSocket(port_number); } catch (IOException e) { //Fehlerausgabe System.out.println(e); } while(true) { try { //Akzeptiere Client (max. 10) clientSocket = serverSocket.accept(); for(int i=0; i<=9; i++) { if(t[i]==null) { //Starte Thread (t[i] = new clientThread(clientSocket,t)).start(); break; } } } catch (IOException e) { //Fehlerausgabe System.out.println(e); } finally { pw.printf("<%tT>\n",cal); pw.println("Der Server wurde Geschlossen"); try { fw.flush(); fw.close(); pw.flush(); pw.close(); } catch (IOException ex) { Logger.getLogger(MultiThreadChatServer.class.getName()).log(Level.SEVERE, null, ex); } } } } } jetzt der clientthread package Chat; import java.io.*; import java.net.*; import java.sql.SQLException; import java.util.*; import java.util.logging.Level; import java.util.logging.Logger; class clientThread extends Thread { private DataInputStream is = null; private PrintStream os = null; private Socket clientSocket = null; private clientThread t[]; private FileWriter fw = null; private PrintWriter pw = null; public clientThread(Socket clientSocket, clientThread[] t) { this.clientSocket=clientSocket; this.t=t; } @Override public void run() { String line; try { //Ein-/Ausgabe Festlegen String logspeicher ="C:\\Dokumente und Einstellungen\\test.log"; File file = new File(logspeicher); fw = new FileWriter( file.getPath() , true ); pw = new PrintWriter( fw ); is = new DataInputStream(clientSocket.getInputStream()); os = new PrintStream(clientSocket.getOutputStream()); pw.println("Ein User ist dem Chat beigetreten."); //Eingabeaufforderung abfragen passwort = new abfragen(clientSocket); String name = passwort.abfragen(clientSocket); pw.println("Der User hat den Namen"+ name); //Willkommensgruß os.println("<Herzlich Willkommen "+name+" in unseren Chatroom.>\n<Um den Raum zu verlassen Tippe /quit in eine neue Zeile>"); for(int i=0; i<=9; i++) { if (t[i]!=null && t[i]!=this) { //Ausgabe an andere das ein neuer Client beigetreten ist t[i].os.println("*** Der Benutzer "+name+" hat den Chatroom betreten !!! ***" ); } } while (true) { line = is.readLine(); //Abbruchbedingung if(line.startsWith("/quit")) { pw.println("Der User "+ name+ " hat den Chatroom verlassen"); break; } for(int i=0; i<=9; i++) { if (t[i]!=null && t[i] !=this) { //Ausgabe der erhaltenen Nachricht an alle außer den Verfasser Calendar cal = Calendar.getInstance(); t[i].os.printf("<%tT>\n",cal); //Zeit t[i].os.println("<"+name+"> \n"+line); //Text pw.printf("<%tT>\n",cal); pw.println("<"+name+"> \n"+line); } } } for(int i=0; i<=9; i++) { if (t[i]!=null && t[i]!=this) { //Ausgabe an andere das jmd den Chat verlassen hat t[i].os.println("*** Der Benutzer "+name+" hat den Raum verlassen !!! ***" ); } } //Ausgabe an den der den Chat verlässt os.println("<*** Auf Wiedersehen "+name+" ***>"); for(int i=0; i<=9; i++) { if (t[i]==this) { //Null setzen des jeweiligen platzes im array das ein neuer Client beitreten kann t[i]=null; } } } catch (SQLException ex) { Logger.getLogger(clientThread.class.getName()).log(Level.SEVERE, null, ex); } //fehlerausgabe catch(IOException e) { System.out.println(e); } finally { try { fw.flush(); fw.close(); pw.flush(); pw.close(); is.close(); clientSocket.close(); os.close(); } catch (IOException e) { Logger.getLogger(clientThread.class.getName()).log(Level.SEVERE, null, e); } } } } nun die passwort abfrage /* * To change this template, choose Tools | Templates * and open the template in the editor. */ package Chat; import com.mysql.jdbc.Connection; import com.mysql.jdbc.Statement; import java.io.DataInputStream; import java.io.IOException; import java.io.PrintStream; import java.net.Socket; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.util.logging.Level; import java.util.logging.Logger; /** * * @author Administrator */ public class abfragen { private DataInputStream is = null; private PrintStream os = null; private String nick; private final Socket clientSocket; abfragen(Socket clientSocket) { this.clientSocket=clientSocket; } public String abfragen (Socket clientSocket) throws SQLException { boolean test = false; int i = 3; try { is = new DataInputStream(clientSocket.getInputStream()); os = new PrintStream(clientSocket.getOutputStream()); os.println("Haben sie bereits einen account ?\n Ja/Nein"); String account = is.readLine(); if (account.equals("Ja")) { while (test == false) { os.println("Geben sie den Benutzernamen ein:"); nick = is.readLine(); os.println("Geben sie das Passwort ein:"); String pw = is.readLine(); String connStr = "jdbc:mysql://localhost:3306/" + "benutzerverwaltung?user=*****&password=*****"; String statement = "Select name, passwort from nutzer where name = '" + nick + "' and passwort = '" + pw + "'"; Connection conn = null; try { Class.forName("com.mysql.jdbc.Driver"); conn = (Connection) DriverManager.getConnection(connStr); java.sql.Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(statement); if (rs.next() == false) { test = false; i--; os.println("Benutzername oder Passwort war falsch!\n Sie haben noch"+i+"Versuche"); if (i<=0) { os.println("Keine Versuche mehr übrig"); System.exit(0); } } else { os.println("Zugang gewaehrt"); test = true; } } catch (ClassNotFoundException e) { os.println(e); } catch (SQLException e) { os.println(e); } finally { try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block System.out.println(e); } } } } else { os.println("Gewuenschter Nickname:"); nick = is.readLine(); os.println("Gewuenschtes Passwort"); String pw = is.readLine(); String connStr = "jdbc:mysql://localhost:3306/" + "benutzerverwaltung?user=root&password=system"; String statement = "INSERT INTO nutzer (name,passwort)" + "VALUES ('" + nick + "', " + "'" + pw + "')"; Connection conn = null; try { //Verbindung aufbauen Class.forName("com.mysql.jdbc.Driver"); conn = (Connection) DriverManager.getConnection(connStr); //Statement deklarieren und ausführen Statement stmt = (Statement) conn.createStatement(); stmt.executeUpdate(statement); } catch (ClassNotFoundException e) { os.println(e); } catch (SQLException e) { os.println(e); }finally { try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block System.out.println(e); } } } } catch (IOException ex) { Logger.getLogger(abfragen.class.getName()).log(Level.SEVERE, null, ex); } return nick; } } und zum schluss der chatclient package Chat; import java.io.*; import java.net.*; import com.sun.jna.*; import java.util.Scanner; import java.util.logging.Level; import java.util.logging.Logger; public class MultiThreadChatClient implements Runnable { // Deklarationen // os = output stream // is = input stream private static Socket clientSocket = null; private static PrintStream os = null; private static DataInputStream is = null; private static BufferedReader inputLine = null; private static boolean closed = false; public static void main(String[] args) { //standard port System.out.println("Geben sie bitte den zu benutzenden Port an."); Scanner scan = new Scanner (System.in); int port_number = scan.nextInt(); String host="LocalHost"; System.out.println("Benutze den Java MultiThreadChatClient \n"+"Der Host"+host+", mit der Portnummer "+port_number+" wird angesprochen"); // Versuche Socket auf gegebenen Host und Port zu zuzugreifen // Deklariere is/os und inputLine try { clientSocket = new Socket(host, port_number); inputLine = new BufferedReader(new InputStreamReader(System.in)); os = new PrintStream(clientSocket.getOutputStream()); is = new DataInputStream(clientSocket.getInputStream()); } catch (UnknownHostException e) { //Fehlerausgabe System.err.println("Kenne den Host "+host+" nicht"); } catch (IOException e) { System.err.println("Bekomme keine I/O Verbindung zum Host"+host); } if (clientSocket != null && os != null && is != null) { try { //Erstelle einen Thread um vom Server zu lesen new Thread(new MultiThreadChatClient()).start(); while (!closed) { os.println(inputLine.readLine()); } } catch (IOException e) { //Fehlerausgabe System.err.println("IOException: " + e); } finally { try { is.close(); clientSocket.close(); os.close(); } catch (IOException ex) { Logger.getLogger(MultiThreadChatClient.class.getName()).log(Level.SEVERE, null, ex); } } } } public interface Kernel32 extends Library { public boolean Beep (int FREQUENCY, int DURATION); public void Sleep (int DURATION); } public void run() { String responseLine; Kernel32 lib = (Kernel32) Native.loadLibrary("kernel32",Kernel32.class); try { while ((responseLine = is.readLine()) != null) { //Ausgabe der Zeile die vom Server kommt if(responseLine.startsWith("<")) { } else { lib.Beep(280, 100); lib.Beep(348, 100); lib.Beep(420, 200); lib.Beep(348, 100); lib.Beep(420, 400); } if(responseLine.startsWith("Tetris")) { lib.Sleep(850 / 4); lib.Beep(329 * 2, 850 / 4); lib.Beep(493 * 1, 850 / 8); lib.Beep(261 * 2, 850 / 8); lib.Beep(293 * 2, 850 / 4); lib.Beep(261 * 2, 850 / 8); lib.Beep(493 * 1, 850 / 8); lib.Beep(440 * 1, 850 / 4); lib.Beep(440 * 1, 850 / 8); lib.Beep(261 * 2, 850 / 8); lib.Beep(329 * 2, 850 / 8); lib.Beep(329 * 2, 850 / 8); lib.Beep(293 * 2, 850 / 8); lib.Beep(261 * 2, 850 / 8); lib.Beep(493 * 1, 1700 / 5); lib.Beep(261 * 2, 850 / 8); lib.Beep(293 * 2, 850 / 4); lib.Beep(329 * 2, 850 / 4); lib.Beep(261 * 2, 850 / 4); lib.Beep(440 * 1, 850 / 4); lib.Beep(440 * 1, 850 / 4); lib.Sleep(850 / (8 / 3)); lib.Beep(293 * 2, 3400 / 13); lib.Beep(349 * 2, 850 / 8); lib.Beep(440 * 2, 850 / 8); lib.Beep(440 * 2, 850 / 8); lib.Beep(391 * 2, 850 / 8); lib.Beep(349 * 2, 850 / 8); lib.Beep(329 * 2, 850 / 3); lib.Beep(261 * 2, 850 / 8); lib.Beep(329 * 2, 850 / 8); lib.Beep(329 * 2, 850 / 8); lib.Beep(293 * 2, 850 / 8); lib.Beep(261 * 2, 850 / 8); lib.Beep(493 * 1, 850 / 4); lib.Beep(493 * 1, 850 / 8); lib.Beep(261 * 2, 850 / 8); lib.Beep(293 * 2, 850 / 4); lib.Beep(329 * 2, 850 / 4); lib.Beep(261 * 2, 850 / 4); lib.Beep(440 * 1, 850 / 4); lib.Beep(440 * 1, 850 / 4); } System.out.println(responseLine); //Abbruchbedingung if (responseLine.indexOf("*** Auf Wiedersehen") != -1) { break; } } closed=true; } catch (IOException e) { //Fehlerausgabe System.err.println("IOException: " + e); } } } damit es so funktioniert sind zusätzlich mysql-connector-java-5.1.15 und com.sun.jna.native sowieso com.sun.jna.library nötig
  3. hm okay hab noch ne andere frage gibt ja auch noch die möglichkeit mit jna nur braucht man da die com.sun.jna.Library diese scheint bei mir zu fehlen wo könnt ich die auf die schnelle herbekommen bzw wie bekomm ich die dann überhaupt da rein ?
  4. Ich hätte eine kurze Fragen bezüglich JNI. Was müsste ich tun um folgendes: #include <windows.h> int main() { Beep(280, 100); Beep(348, 100); Beep(420, 200); Beep(348, 100); Beep(420, 400); } in ein Java programm einzubinden (da Java leider beim beep mit awt.defaultToolkit keine Frequenz und Dauer angeben kann). Ich möchte also in einen Java Programm diesen "Sound" wiedergeben. Kann mir jemand erklären wie ich das machen kann ?
  5. Nunja hab das problem jetzt mit hilfe von ein paar schleifen gelöst und alles funktioniert wunderbar und ich habe immernoch einen server, weil das teil der aufgabe war....
  6. 1. das einzige was das programm können soll ist: eine eingabe von einen beliebigen client zu erhalten und diese dann an alle anderen clients verteilen, es sind keine weiteren anforderungen gestellt es soll später auch nichts weiter hinzukommen. 2. mein einziges problem zur zeit ist eben das ich nicht dahin komme das der server an sämtliche clients schickt
  7. okay, ja hab verstanden was du meinst (sorry aber netzwerke lagen mir noch nie so wirklich) hab das jetzt soweit das ich einen multicast habe, ja ohne server, bei den ich auch senden und empfangen kann, nur mein problem jetzt is das man erst etwas erhält wenn man selber etwas sendet wie ist es denn möglich das man sofort eine ausgabe erhält wenn ein anderer eine eingabe tätigt ?
  8. Nunja, wenn ich mir die definition von broadcast so durchles (was ich vorher schon getan habe) ist das genau das was ich haben will, nämlich ein server der wahllos eine eingehende nachricht an sämtliche verbundene clients verschickt oder hab ich da jetzt was falsch verstanden ?
  9. ist es dann nicht eher der broadcast ich möchte schließlich das jeder sämtliche eingaben erhält und nicht nur bestimmte, soll heißen ein client macht eine eingabe und alle anderen user erhalten die gleiche,
  10. okay, wäre mein problem dann mit einen multicast gelöst? d.h. wenn der server eine eingabe bekommt sendet er das dann automatisch an alle oder muss ich explizit sagen schicke die eingabe an den den und den ?
  11. ich möchte den server sagen das er nachrichten allen schicken soll und nicht nur einen ein bsp.: wenn ich im server eine nachricht eine tippe kommt die nur bei einen an wenn dann noch eine eingegeben wird bei einen anderen usw und ich möchte nun wissen ob es eine möglichkeit gibt zu sagen schicke immer allen die nachricht
  12. Schönen Gutan Tag allerseits ich hoffe ihr könnt mir helfen (bin in java noch relativ neu) ich habe im zuge meiner ausbildung die aufgabe bekommen einen einfachen java chat zu programmieren, in der form das ich einen server habe und mehrere clients die immer alle die nachricht erhalten egal von wen geschrieben nun habe ich mittlerweile einen funktionsfähigen server und client (ich habe es so eingerichtet das auch der server nachrichten schreiben kann) nun komme ich leider nicht weiter da ich keine idee habe wie ich es regeln könnte das alle die nachricht erhalten und nicht nur einer. das ist mein server import java.io.*; import java.net.*; import java.util.*; public class ServerTest { public static void main(String[] args) throws IOException { ServerSocket serverSocket = null; try { serverSocket = new ServerSocket(4444); System.out.println("Server gestartet"); } catch (IOException e) { System.err.println("Das ist nicht möglich!"); System.exit(-1); } Socket clientSocket = null; for(int i=1;;i++) { try { clientSocket = serverSocket.accept(); System.out.println("Client eingetroffen"); } catch (IOException e) { System.err.println("Accept failed: 4444"); System.exit(-1); } SocketHandler sh = new SocketHandler(clientSocket, i); sh.start(); clientSocket = null; } } } class SocketHandler extends Thread { private Socket socket; private int ID; public SocketHandler(Socket clientSocket, int i) { socket = clientSocket; ID = i; } public void run() { try{ PrintWriter ausgabe = new PrintWriter(socket.getOutputStream(), true); BufferedReader eingabe = new BufferedReader(new InputStreamReader(socket.getInputStream())); ausgabe.println("Der Server hat dich als Nummer"+ID+" verbunden"); System.out.println("Der Server hat sich mit Nummer"+ID+" verbunden"); String inputLine; while ((inputLine = eingabe.readLine()) != null) { System.out.println("User" +ID + inputLine); if (inputLine.equals("Bye")) { break; } Scanner scan = new Scanner (System.in); String antwort = scan.nextLine(); ausgabe.println("Server: "+antwort); } ausgabe.println("Der Server trennt die Verbindung mit dir"); System.out.println("Der Server trennt die Verbingung mit Nummer"+ID); ausgabe.close(); eingabe.close(); socket.close(); } catch (Exception e) { } } } und das ist mein client import java.io.*; import java.net.*; public class ClientTest { public static void main(String[] args) throws IOException { Socket socket = null; try { socket = new Socket("10.4.34.231", 4444); } catch (IOException e) { System.err.println("Accept failed: 4444"); System.exit(-1); } PrintWriter out = new PrintWriter(socket.getOutputStream(), true); BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream())); BufferedReader eingabe = new BufferedReader(new InputStreamReader(System.in)); String inputLine, eingabeLine; if ((inputLine = in.readLine()) != null) System.out.println(inputLine); while ((eingabeLine = eingabe.readLine()) != null) { if (eingabeLine.equals("Bye")) break; out.println(eingabeLine); inputLine = in.readLine(); System.out.println(inputLine); } out.close(); in.close(); socket.close(); } } und noch etwas ich möchte keinesfalls ein fertiges programm sondern nur einen schubs in die richtige richtung bzw einen ansatz wie ich das lösen kann denn ich bin grade wirklich planlos

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...