Socket - Receber e enviar stream ao invés de strings

1 resposta
L

Bom dia pessoal, eu tenho essa aplicação aí que é um servidor de chat(socket), como eu faço pra receber e enviar ao invés de string fazer com stream, as mensagens que vão ser enviadas pra ele tão em stream e lá também vai receber o stream, []'s a todos.

1 Resposta

L

Desculpa esqueci as classes

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package servidor;

/**
 *
 * @author LEOGAZIO
 */
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

public class ChatServer {
    public static final int DEFAULT_PORT = 7000;
    public static void main(String[] args) {
	int port = DEFAULT_PORT;
	ServerSocket serverSocket = null;
	Socket socket = null;
	try {
	    if(args.length > 0)
	        port = Integer.parseInt(args[0]);
	} catch(NumberFormatException nfe) {
	    System.err.println("Usage: java ChatServer [port]");
	    System.err.println("Where options include:");
	    System.err.println("\tport the port on which to listen.");
	    System.exit(0);
	}
	try {
	    serverSocket = new ServerSocket(port);
	    while(true) {
	        socket = serverSocket.accept();
	        ChatHandler handler = new ChatHandler(socket);
	        handler.start();
	    }
	} catch(IOException ioe) {
	    ioe.printStackTrace();
	} finally {
	    try {
	        serverSocket.close();
	    } catch(IOException ioe) {
		ioe.printStackTrace();
	    }
	}
    }
}
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package servidor;

/**
 *
 * @author LEOGAZIO
 */
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Vector;

public class ChatHandler extends Thread {
  static Vector handlers = new Vector( 10 );
  private Socket socket;
  private BufferedReader in;
  private PrintWriter out;

    public ChatHandler(Socket socket) throws IOException {
        this.socket = socket;
	in = new BufferedReader(
	    new InputStreamReader(socket.getInputStream()));
	out = new PrintWriter(
	    new OutputStreamWriter(socket.getOutputStream()));
    }
    public void run() {
        String line;
	synchronized(handlers) {
	    handlers.addElement(this);
 // add() not found in Vector class
	}
	try {
	    while(!(line = in.readLine()).equalsIgnoreCase("/quit")) {
		for(int i = 0; i < handlers.size(); i++) {	
			synchronized(handlers) {
		            ChatHandler handler =
			        (ChatHandler)handlers.elementAt(i);
		        handler.out.println(line + "\r");
			handler.out.flush();
			}
		}
	    }
	} catch(IOException ioe) {
	    ioe.printStackTrace();
	} finally {
	    try {
		in.close();
		out.close();
		socket.close();
	    } catch(IOException ioe) {
	    } finally {
		synchronized(handlers) {
		    handlers.removeElement(this);
		}
	    }
	}
    }
}
Criado 23 de janeiro de 2008
Ultima resposta 23 de jan. de 2008
Respostas 1
Participantes 1