Vraag : De Cliënt Applet van Java - Bericht van server aan ALLE cliënten

O.K. zo had ik dit maar anderzijds besliste ik het te maken zodat het notiify alle verbonden cliënten die iemand verliet. Dan moest ik naar slaap gaan zodat bewaarde ik het. Uiteindelijk werd het aan het punt waar het berichten herhaalde zodat kon ik enkel niet CTRL+Z mijn terugweg….

In de server hier de code is die veronderstelt is te sturen:

From SERVER.JAVA
1:
2:
3:
4:
5:
6:
7:
 voor (int. i=0; i<=9; i++) {
				als (t [I]! =null && t [I]! =this) {
				    t [I] .os.println (name+ is " toegetreden. „);
				}
	}

	    System.out.println (name+ is " het spel ingegaan. Hun aanval: „+ px);


and is hier het cliëntstuk van code dat veronderstelt is om dat bericht…

1 uit te spugen:
2:
3:
 terwijl ((responseLine = is.readLine ()) ! = verklaar) nietig {
		System.out.println („Cliënt >“ + responseLine);
	    }
/>So ja… hulp 


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:
36:
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.*;
de invoer java.net. *;
de invoer java.util.*;
de invoer java.util. Scanner;

openbare klassenServer {

    de statische Contactdoos clientSocket = verklaart nietig;
    statische ServerSocket serverSocket = verklaart nietig;
    statische responseLine van het Koord;
   	openbare statische stillServ van Boole = vals;
   	de openbare statische scanner van de Scanner = nieuwe Scanner (System.in);

	statische clientThread t [] = nieuwe clientThread [10];


    openbare statische nietige leiding (Koord args []) {

	// de standaardhaven



	int. port_number=4444;

	als (args.length < 1)
	    {
		System.out.println (het „Beginnende aantal \ van de spelserver… nPort: „+port_number);

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

        probeer {
	    serverSocket = nieuwe ServerSocket (port_number);
	    System.out.println („\ n ********************** \ n *** SERVER BEGONNEN *** \ n ********************** \ n“);
        }
        vangst (IOException e)
	    {System.out.println (e);}


			  /** System.out.print („ga een bevel in: “);
			   	Het wachtwoord van het koord = scanner.nextLine ();

			   	als (password.equalsIgnoreCase („geheim“)) {
			   	    System.out.println („Onthaal aan de Toepassing van Java“);
			   	}
**/

	terwijl (waar) {




	    probeer {
		clientSocket = serverSocket.accept ();
		voor (int. i=0; i<=9; i++) {
		    als (t [I] ==null)
			{
			    (t [I] = nieuwe clientThread (clientSocket, t)).start ();
			    onderbreking;
			}
		}
	    }
	    vangst (IOException e) {
		System.out.println (e);}
	}
    }
}

de klasse clientThread breidt Draad uit {

	BufferedReader is = nietig verklaart;
    PrintStream os = verklaart nietig;
    De contactdoos clientSocket = verklaart nietig;
    clientThread t [];
    Willekeurig broodje = nieuwe Willekeurig ();

    openbare clientThread (Contactdoos clientSocket, clientThread [] t) {
	this.clientSocket=clientSocket;
        this.t=t;
    }

    openbare nietige looppas ()
    {
System.out.println („momenteel lopend…“);
	De lijn van het koord;
        De naam van het koord;

        int. py;
	probeer {

	    is = nieuwe BufferedReader (nieuwe InputStreamReader (clientSocket.getInputStream ()));

	    os = nieuwe PrintStream (clientSocket.getOutputStream ());

	    int. px = roll.nextInt (200);
	    //os.println („ga uw naam in. “);

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

	    	    voor (int. i=0; i<=9; i++) {
				als (t [I]! =null && t [I]! =this) {
				    t [I] .os.println (name+ is " toegetreden. „);
				}
	}

	    System.out.println (name+ is " het spel ingegaan. Hun aanval: „+ px);

	    voor (int. i=0; i<=9; i++)
		als (t [I]! =null && t [I]! =this)
		    t [I] .os.println („*** ging A nieuwe gebruiker „+name+“ de praatjeruimte in!!! ***“);

	    terwijl (waar) {

		lijn = is.readLine ();
                als (line.startsWith („/quit“)) onderbreking;
		voor (int. i=0; i<=9; i++)
		    als (t [I]! =null) t [I] .os.println („< " +name+“: „+px+ " > „+line); // iemand zei iets
	    }
	    voor (int. i=0; i<=9; i++)
		als (t [I]! =null && t [I]! =this) {
		System.out.println („\ n heeft“ + naam +“ weggegaan! \ n ");
		    t [I] .os.println („*** de gebruiker „+name+“ verlaat de praatjeruimte!!! ***“);
		}

	    os.println („*** tot ziens „+name+“ ***“);

	    voor (int. i=0; i<=9; i++) {
		als (t [I] ==this) t [I] =null;
		System.out.println („nSomeone \ heeft weggegaan! \ n“);
	}

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

	}
	vangst (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:
36:
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.*;
de invoer java.applet. Applet;
de invoer java.net. *;
de invoer javax.swing.*;
de invoer java.awt.*;
de invoer java.util.*;
de invoer java.awt.event.*;

de openbare klasse ClientApplet breidt Jaagbare instrumenten JApplet uit {

      openbaar statisch praatje JTextField;
      openbare statische JTextArea chattxt;
      openbare statische PrintStream os = verklaart nietig;
      de statische Contactdoos clientSocket = verklaart nietig;
      statische BufferedReader is = nietig verklaart;

      openbare nietige init () {

		  System.out.println („****** Onthaal aan het spel ******“);

            praatje = nieuwe JTextField (40);
            chattxt = nieuwe JTextArea (20.50);

            chat.addActionListener (nieuwe ActionListener () {
               de openbare leegte actionPerformed (gebeurtenis ActionEvent) {
                    System.out.println (chat.getText ());
               }
             });
            voeg toe (praatje);
            voeg toe (chattxt);
               chattxt.append („Hey! “);
      }

      openbaar nietig begin () {
         nieuwe Draad (dit) .start ();
      }


      openbare in werking gestelde leegte () {


De contactdoos s = verklaart nietig;

probeer {
//s = nieuwe Contactdoos (getParameter („gastheer“), Integer.valueOf (getParameter („haven“)));
s = nieuwe Contactdoos („localhost“, 4444);
InputStream in = s.getInputStream ();

os = nieuwe PrintStream (s.getOutputStream ());
int. buf = -1;


responseLine van het koord;

	    terwijl ((responseLine = is.readLine ()) ! = verklaar) nietig {
		System.out.println („Cliënt >“ + responseLine);

	    }

terwijl ((buf = in.read ()) ! = -1) {

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


}
chattxt.append („gelezen \ nIn: “ + in.read () + „verzonden \ nServer: “ + binnen);

} vangst (Uitzondering e) {
e.printStackTrace ();
}
tot slot {
probeer {
	s.close ();
	} vangst (IOException e)
	{}
}



}
}

Antwoord : De Cliënt Applet van Java - Bericht van server aan ALLE cliënten

> InputStream in = s.getInputStream ();

verander dat:

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

En verwijder het volgende, gemakkelijker om de reactie van serverlijn door lijn te lezen gebruikend „in“

> terwijl ((buf = in.read ()) ! = -1) {
> chattxt.append („\ n“ + buf);
> }
> chattxt.append („gelezen \ nIn: “ + in.read () + „verzonden \ nServer: “ + binnen);
Andere oplossingen  
 
programming4us programming4us