Comunicador

0 respostas
netocazuza
Sou novo em java, e preciso fazer um comunicador para trocar mensagens entre um cliente e um servidor. Até consegui um código aqui na net, simplesinho, onde um cliente troca arquivo com um servidor, e gostaria de adaptar esse código, para ao invés de enviar arquivo, enviar um texto digitado pelo usuário. Nesse código também, o servidor só fica escutando, gostaria que ele enviasse mensagem do usuário também. De preferência comentem o código, pra que eu entenda a mecânica da coisa. Segue o código: SERVIDOR
import java.net.ServerSocket;
import java.net.Socket;
import java.io.ObjectInputStream;
import java.io.FileOutputStream;

public class Server {

	public static void main(String[] args) {
		try {
			ServerSocket serv = new ServerSocket(9696);
			while(true){
				System.out.println("Aguardando cliente...");
				Socket socket = serv.accept();
				ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
				String fileName = in.readUTF();
				long size = in.readLong();
				FileOutputStream fos = new FileOutputStream(fileName);
				byte[] buf = new byte [4096];
				while(true){
					int len = in.read(buf);
					if(len == -1)break;
					
					fos.write(buf,0,len);
				}
				fos.flush();
				fos.close();
				System.out.println("Arquivo recebido!");
			}
		}catch (Exception ex){
			ex.printStackTrace();
		}
	}
}
CLIENTE
import java.net.Socket;
import java.io.ObjectOutputStream;
import java.io.File;
import java.io.FileInputStream;

public class Client {

	public static void main(String[] args) {
		File f = new File("C:/Users/neto$/Documents/foto.txt");
		try{
			Socket socket = new Socket("127.0.0.1",9696);
			ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
			System.out.println("Transferindo o arquivo:  " + f.getName());
			out.writeUTF(f.getName());
			out.writeLong(f.length());
			FileInputStream in = new FileInputStream(f);
			byte[]buf = new byte [4096];
			
			while(true){
				int len = in. read(buf);
				if(len == -1)break;
				out.write(buf,0,len);
			}
			out.close();
			socket.close();
			System.out.println("pronto");
		} catch(Exception e){
			e.printStackTrace();
		}
	}
}
Criado 26 de outubro de 2014
Respostas 0
Participantes 1