Ola pessoal,nao estou conseguindo fazer com que o servidor leia o arquivo em byte e passe para o cliente localhost, da erro o metodo read!
podem me ajudar?Vlw
SERVIDOR
// Servidor de Hora - N conexoes nao simultaneas
// este servidor espera pedidos de conexao na porta 13. Quando um pedido de conexao eh recebido,
// ele le a hora do relogio do sistema e envia esta informacao atraves da porta criada no momento do
// estabelecimento da conexa
// Autor: Alcione de Paiva Oliveira
// Modificado por: Carlos de Castro Goulart
//importacao das classes net (pilha TCP/IP), io (entrada e saida) e Date (metodo para ler o horario corrente)
import java.net.*;
import java.io.*;
import java.util.Date;
import java.io.InputStream;
import java.io.FileInputStream;
public class serverany {
// porta padrao do daytime - se for rodar este codigo em maquina servidora que ja tenha
// o servico daytime vai dar conflito de porta
public final static int daytimePort = 13;
public static void main(String[] args) {
// definicao das portas
// de escuta dos pedidos de conexao
ServerSocket portaEscuta;
//de comunicacao com o cliente
Socket portaComCliente;
// buffer de saida
PrintWriter saida;
try {
// tenta instanciar o socket portaEscuta na porta de numero "daytimePort" = 13, neste exemplo.
portaEscuta = new ServerSocket(daytimePort);
try {
System.out.println("Servidor no ar...");
int i = 0;
while (true) {
// espera por pedidos de conexao
portaComCliente = portaEscuta.accept();
// associa um buffer de saida com a porta de comunicacao com o cliente
saida = new PrintWriter(portaComCliente.getOutputStream(), true);
// executa o comando Date - que retorna hora e data - enviando para o socket portaComCliente
// saida.println(new Date());
byte[] buff;
String dName = "C:\\";
String nomeArquivo = "pdf.pdf";
File file = new File(dName + nomeArquivo);
FileInputStream in = new FileInputStream(file);
Integer count;
buff = new byte[2048];
while ((count = in.read(buff)) != -1) {
file.read(buff,0,count); //<---------------------Acredito que aqui esta o erro ou um dos erros
}
// encerra conexao
portaComCliente.close();
i++;
System.out.println("Cliente "+i+" atendido...");
}
}
catch (IOException e) {
portaEscuta.close();
System.err.println(e);
}
} // end try
catch (IOException e) {
System.err.println(e);
}
}
}
CLIENTE
// Cliente de Hora
// este cliente faz pedidos de conexao com a porta 13 (daytime)
// para saber a hora do relogio do sistema remoto
// Autor: Alcione de Paiva Oliveira
// Modificado por: Carlos de Castro Goulart
//importacao das classes net (pilha TCP/IP) e io (entrada e saida)
import java.net.*;
import java.io.*;
public class daytimeClient {
public static void main(String[] args) {
// porta de comunicacao do cliente para receber a resposta
Socket theSocket;
// nome da maquina remota (ou seu IP)
String hostname;
//estrutura de dados - buffer de leitura
BufferedReader ent = null;
// se nao for fornecido um nome como parametro, procura o servico na propria maquina (localhost)
if (args.length > 0) {
hostname = args[0];
}
else {
hostname = "localhost";
}
try {
// estabelece conexao com porta 13 - porta padrao do servico daytime
theSocket = new Socket(hostname, 13);
//associa estrutura de dados com o socket
ent = new BufferedReader(new InputStreamReader(theSocket.getInputStream()));
// Le dados do socket
String theTime = ent.readLine();
System.out.println("o arquivo é" + hostname);
}
catch (UnknownHostException e) {
System.err.println(e);
}
catch (IOException e) {
System.err.println(e);
}
}
}