Boa noite, lamento que meu primeiro post no fórum já seja uma dúvida, (e se pá uma meio boba até =/ )
Então, estou seguindo a apostila da Caelum, e nos últimos capítulos tem o exercício do Chat.
Eu fiz conforme a apostila( :oops: ) e funcionou mas não entendi porque o server quebra cada palavra em uma nova linha, mesmo que eu envie uma frase inteira.
Outra dúvida é referente à transferencia de um arquivo de texto. Ele até transfere, mas ocorre o mesmo problema da quebra de linha, e no fim ainda ocorre a seguinte excessão:
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at br.com.caelum.chat.servidor.FileServer.main(FileServer.java:32)
Abaixo segue o código.
Desde já agradeço!
Lado Serverpackage br.com.caelum.chat.servidor;
import java.io.BufferedWriter;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
public class FileServer {
public static void main(String[] args) {
try {
ServerSocket servidor = new ServerSocket(12345);
Socket cliente = servidor.accept();
System.out.println("Nova conexão com o cliente : " + cliente.getInetAddress().getHostAddress());
Scanner sc = new Scanner(cliente.getInputStream());
BufferedWriter bw = new BufferedWriter( new OutputStreamWriter(new FileOutputStream("C:/Users/Fausto/Desktop/merda.txt")));
/*
while (scan.hasNextLine()) {
bw.write(scan.nextLine());
bw.newLine();
} */
while (sc.hasNextLine()) {
//bw.write(sc.nextLine());
//bw.newLine();
System.out.println(sc.next());
}
sc.close();
servidor.close();
cliente.close();
} catch (IOException e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
System.out.println("Porta Aberta!");
}
}
package br.com.caelum.chat.cliente;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
public class FileClient {
public static void main(String[] args) {
try {
Socket cliente = new Socket("127.0.0.1", 12345);
System.out.println("Conectado!");
Scanner teclado = new Scanner(new FileInputStream("src/br/com/caelum/chat/cliente/arquivo.txt"));
PrintStream saida = new PrintStream(cliente.getOutputStream());
while (teclado.hasNextLine()){
saida.println(teclado.next());
}
saida.close();
teclado.close();
cliente.close();
} catch (UnknownHostException e) {
System.out.println(e.getMessage());
e.printStackTrace();
} catch (IOException e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
}
}