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();
}
}
}