Frage : Java-Klienten-applet - Mitteilung vom Bediener zu ALLEN Klienten

O.K. also ich hatten dieses, aber andererseits entschied mich ich, es zu bilden, also notiify es alle verbundenen Klienten, die jemand verließ. Dann musste ich gehen zu schlafen, also speicherte ich es. Schließlich gelangte es an den Punkt, in dem es Mitteilungen wiederholte, also ich könnte gerade nicht CTRL+Z meine Weisenrückseite….

In der Bediener hier ist der Code, der annehmen, um auszusenden ist:

From SERVER.JAVA
1:
2:
3:
4:
5:
6:
7:
 für (int i=0; i<=9; i++) {
				wenn (t [i]! =null && t [i]! =this) {
				    t [i] .os.println (name+ " hat joined.");
				}
	}

	    System.out.println (name+ " hat das Spiel eingetragen. Ihr Angriff: „+ px);


and hier ist das Klientenstück des Codes, der annehmen, um dieses Mitteilung…

1 heraus zu spucken ist:
2:
3:
, während ((responseLine = is.readLine ()) ! = Null) {
		System.out.println („Klient >“ + responseLine);
	    }


So yeah… Hilfe?

Server.java:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
118:
119:
120:
121:
122:
123:
124:
125:
126:
127:
128:
129:
130:
131:
132:
133:
134:
135:
136:
137:
138:
139:
140:
141:
142:
143:
import java.io.*;
Import java.net. *;
Import java.util.*;
Import java.util. Scanner;

allgemeiner Kategorie Bediener {

    statisches EinfaßungsclientSocket = -null;
    statisches ServerSocket serverSocket = Null;
    statisches Schnur responseLine;
   	allgemeines statisches Boolesches stillServ = falsch;
   	allgemeiner statischer Scanner-Scanner = neuer Scanner (System.in);

	statisches clientThread t [] = neues clientThread [10];


    allgemeine Staticlückenhauptleitung (Schnur args []) {

	// der Rückstellungshafen



	int port_number=4444;

	wenn (args.length < 1)
	    {
		System.out.println („, Spielbediener… \ nPort Zahl beginnend: „+port_number);

	    } sonst {
		port_number=Integer.valueOf (args [0]) .intValue ();
	    }

        Versuch {
	    serverSocket = neues ServerSocket (port_number);
	    System.out.println („\ n ********************** \ n *** BEDIENER BEGONNENES *** \ n ********************** \ n“);
        }
        Fang (IOException e)
	    {System.out.println (e);}


			  /** System.out.print („einen Befehl eingeben: ");
			   	Schnurkennwort = scanner.nextLine ();

			   	wenn (password.equalsIgnoreCase („Geheimnis“)) {
			   	    System.out.println („Willkommen zur Java-Anwendung“);
			   	}
**/

	während (zutreffend) {




	    Versuch {
		clientSocket = serverSocket.accept ();
		für (int i=0; i<=9; i++) {
		    wenn (t [i] ==null)
			{
			    (t [i] = neues clientThread (clientSocket, t)) .start ();
			    Bruch;
			}
		}
	    }
	    Fang (IOException e) {
		System.out.println (e);}
	}
    }
}

Kategorie clientThread verlängert Gewinde {

	BufferedReader ist = Null;
    PrintStream OS = Null;
    EinfaßungsclientSocket = -null;
    clientThread t [];
    Gelegentliche Rolle = neues gelegentliches ();

    allgemeines clientThread (Einfaßung clientSocket, clientThread [] t) {
	this.clientSocket=clientSocket;
        this.t=t;
    }

    Öffentlichkeitslücke laufen gelassen ()
    {
System.out.println („z.Z. laufend… ");
	Schnurlinie;
        Schnurname;

        int PY;
	Versuch {

	    = ist neues BufferedReader (neues InputStreamReader (clientSocket.getInputStream ()));

	    OS = neues PrintStream (clientSocket.getOutputStream ());

	    int px = roll.nextInt (200);
	    //os.println („Ihr name.") eintragen;

	    Name = „Gast #“ + roll.nextInt (6);

	    	    für (int i=0; i<=9; i++) {
				wenn (t [i]! =null && t [i]! =this) {
				    t [i] .os.println (name+ " hat joined.");
				}
	}

	    System.out.println (name+ " hat das Spiel eingetragen. Ihr Angriff: „+ px);

	    für (int i=0; i<=9; i++)
		wenn (t [i]! =null && t [i]! =this)
		    t [i] .os.println („*** betrat A neuer Benutzer „+name+“ den Chat-Room!!! *** ");

	    während (zutreffend) {

		Linie = is.readLine ();
                wenn (line.startsWith („/quit“)) Bruch;
		für (int i=0; i<=9; i++)
		    wenn (t [i]! =null) t [i] .os.println („< " +name+“: „+px+ " > „+line); // jemand sagte etwas
	    }
	    für (int i=0; i<=9; i++)
		wenn (t [i]! =null && t [i]! =this) {
		System.out.println („\ n“ + Name +“ hat verlassen! \ n ");
		    t [i] .os.println („*** der Benutzer „+name+“ lässt den Chat-Room!!! *** ");
		}

	    os.println („*** Tschüss „+name+“ *** ");

	    für (int i=0; i<=9; i++) {
		wenn (t [i] ==this) t [i] =null;
		System.out.println („\ nSomeone hat verlassen! \ n“);
	}

	    is.close ();
	    os.close ();
	    clientSocket.close ();

	}
	Fang (IOException e) {};



    }
}


ClientApplet.java
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
6:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
import java.io.*;
Import java.applet. Applet;
Import java.net. *;
Import javax.swing.*;
Import java.awt.*;
Import java.util.*;
Import java.awt.event.*;

allgemeine Kategorie ClientApplet verlängert die jagdbaren JApplet Werkzeuge {

      allgemeines statisches JTextField Schwätzchen;
      allgemeines statisches JTextArea chattxt;
      allgemeines statisches PrintStream OS = Null;
      statisches EinfaßungsclientSocket = -null;
      statisches BufferedReader ist = Null;

      Öffentlichkeit leeres init () {

		  System.out.println („****** Willkommen zum Spiel ****** ");

            Schwätzchen = neues JTextField (40);
            chattxt = neues JTextArea (20.50);

            chat.addActionListener (neues ActionListener () {
               Öffentlichkeitslücke actionPerformed (ActionEvent Ereignis) {
                    System.out.println (chat.getText ());
               }
             });
            hinzufügen (Schwätzchen);
            hinzufügen (chattxt);
               chattxt.append („he! ");
      }

      Öffentlichkeitslückenanfang () {
         neues Gewinde (dieses) .start ();
      }


      Öffentlichkeitslücke laufen gelassen () {


Einfaßung s = Null;

Versuch {
//s = neue Einfaßung (getParameter („Wirt“), Integer.valueOf (getParameter („Hafen“)));
s = neue Einfaßung („localhost“, 4444);
InputStream in = s.getInputStream ();

OS = neues PrintStream (s.getOutputStream ());
int buf = -1;


Schnur responseLine;

	    während ((responseLine = is.readLine ()) ! = Null) {
		System.out.println („Klient >“ + responseLine);

	    }

während ((buf = in.read ()) ! = -1) {

chattxt.append („\ n“ + buf);


}
chattxt.append („\ nIn gelesen: “ + in.read () + „\ nServer gesendet: “ + innen);

} Fang (Ausnahme e) {
e.printStackTrace ();
}
schließlich {
Versuch {
	s.close ();
	} Fang (IOException e)
	{}
}



}
}

Antwort : Java-Klienten-applet - Mitteilung vom Bediener zu ALLEN Klienten

> InputStream in = s.getInputStream ();

das zu ändern:

in = neues BufferedReader (neues InputStreamReader (s.getInputStream ()));

Und das folgende entfernen, einfacher, die Antwort vom Bediener zu lesen, der Reihe für Reihe ist using „in“

> während ((buf = in.read ()) ! = -1) {
> chattxt.append („\ n“ + buf);
> }
> chattxt.append („\ nIn lasen: “ + sendete in.read () + „\ nServer: “ + innen);
Weitere Lösungen  
 
programming4us programming4us