Question : Java Client Applet - Message from server to ALL clients

OK so I had this but then I decided to make it so it would notiify all connected clients that someone left. Then I had to go to sleep so I saved it. Eventually it got to the point where it was repeating messages so I just couldn't CTRL+Z my way back....

In the server here is the code that's suppose to send out:

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

	    System.out.println(name+" has entered the game. Their attack: " + px);


and here is the client piece of code that is suppose to spit out that message...

1:
2:
3:
	    while ((responseLine = is.readLine()) != null) {
		System.out.println("Client > " + responseLine);
	    }


So yeah... help?

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.*;
import java.net.*;
import java.util.*;
import java.util.Scanner;

public class Server{

    static  Socket clientSocket = null;
    static  ServerSocket serverSocket = null;
    static String responseLine;
   	public static boolean stillServ = false;
   	public static Scanner scanner = new Scanner(System.in);

	static  clientThread t[] = new clientThread[10];


    public static void main(String args[]) {

	// The default port



	int port_number=4444;

	if (args.length < 1)
	    {
		System.out.println("Starting game server...\nPort number: "+port_number);

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

        try {
	    serverSocket = new ServerSocket(port_number);
	    System.out.println("\n**********************\n*** SERVER STARTED ***\n**********************\n");
        }
        catch (IOException e)
	    {System.out.println(e);}


			  /** 	System.out.print("Enter a command: ");
			   	String password = scanner.nextLine();

			   	if (password.equalsIgnoreCase("secret")) {
			   	    System.out.println("Welcome to Java Application");
			   	}
**/

	while(true){




	    try {
		clientSocket = serverSocket.accept();
		for(int i=0; i<=9; i++){
		    if(t[i]==null)
			{
			    (t[i] = new clientThread(clientSocket,t)).start();
			    break;
			}
		}
	    }
	    catch (IOException e) {
		System.out.println(e);}
	}
    }
}

class clientThread extends Thread{

	BufferedReader is = null;
    PrintStream os = null;
    Socket clientSocket = null;
    clientThread t[];
    Random roll = new Random();

    public clientThread(Socket clientSocket, clientThread[] t){
	this.clientSocket=clientSocket;
        this.t=t;
    }

    public void run()
    {
System.out.println("Currently running...");
	String line;
        String name;

        int py;
	try{

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

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

	    int px = roll.nextInt(200);
	    //os.println("Enter your name.");

	    name = "Guest #" + roll.nextInt(6);

	    	    for(int i=0; i<=9; i++) {
				if (t[i]!=null && t[i]!=this) {
				    t[i].os.println(name+" has joined." );
				}
	}

	    System.out.println(name+" has entered the game. Their attack: " + px);

	    for(int i=0; i<=9; i++)
		if (t[i]!=null && t[i]!=this)
		    t[i].os.println("*** A new user "+name+" entered the chat room !!! ***" );

	    while (true) {

		line = is.readLine();
                if(line.startsWith("/quit")) break;
		for(int i=0; i<=9; i++)
		    if (t[i]!=null)  t[i].os.println("<"+name+":"+px+"> "+line); // someone said something
	    }
	    for(int i=0; i<=9; i++)
		if (t[i]!=null && t[i]!=this) {
		System.out.println("\n" + name + " has left!\n");
		    t[i].os.println("*** The user "+name+" is leaving the chat room !!! ***" );
		}

	    os.println("*** Bye "+name+" ***");

	    for(int i=0; i<=9; i++) {
		if (t[i]==this) t[i]=null;
		System.out.println("\nSomeone has left!\n");
	}

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

	}
	catch(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.*;
import java.applet.Applet;
import java.net.*;
import javax.swing.*;
import java.awt.*;
import java.util.*;
import java.awt.event.*;

public class ClientApplet extends JApplet implements Runnable {

      public static JTextField chat;
      public static JTextArea chattxt;
      public static PrintStream os = null;
      static Socket clientSocket = null;
      static BufferedReader is = null;

      public void init() {

		  System.out.println("****** Welcome to the game ******");

            chat = new JTextField(40);
            chattxt = new JTextArea(20,50);

            chat.addActionListener(new ActionListener() {
               public void actionPerformed(ActionEvent event) {
                    System.out.println(chat.getText());
               }
             });
            add(chat);
            add(chattxt);
               chattxt.append("Hey!");
      }

      public void start() {
         new Thread(this).start();
      }


      public void run() {


Socket s = null;

try {
//s = new Socket(getParameter("host"), Integer.valueOf(getParameter("port")));
s = new Socket("localhost", 4444);
InputStream in = s.getInputStream();

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


String responseLine;

	    while ((responseLine = is.readLine()) != null) {
		System.out.println("Client > " + responseLine);

	    }

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

chattxt.append("\n" + buf);


}
chattxt.append("\nIn read: " + in.read() + "\nServer sent: " + in);

}catch(Exception e) {
e.printStackTrace();
}
finally {
try {
	s.close();
	} catch(IOException e)
	{ }
}



}
}

Answer : Java Client Applet - Message from server to ALL clients

> InputStream in = s.getInputStream();

change that to:

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

And remove the following, easier to read the response from server line by line using 'in'

> while ((buf = in.read()) != -1) {
> chattxt.append("\n" + buf);
> }
> chattxt.append("\nIn read: " + in.read() + "\nServer sent: " + in);
Random Solutions  
 
programming4us programming4us