Ir ao conteúdo
  • Cadastre-se

Java...


SYSOP

Posts recomendados

Pessoal estou com um problema e gostaria de saber se alguém aqui pode me dar uma força. Este programa faz com que ocorra uma cópia de um arquivo. É o seguinte: você cria uma pasta (CLT) que vai ser a pasta do cliente, e a outra é a pasta (SRV) do servidor o qual vai enviar um arquivo tipo .txt qualquer que eu coloque dentro desta pasta. O cliente vai solicitar um arquivo ao servidor, e o mesmo vai procurar para saber se ele tem ou não o arquivo, caso não ele envia uma mensagem q não achou ou coisa parecida, mas se ele achar além de dizer q achou ele envia a o arquivo pra pasta do cliente. O q está ocorrendo é eu não estou conseguindo fazer com que o servidor envie o arquivo para o cliente. se alguém puder ajudar eu agradeço.

Valeu... ;)

Este é o cliente:

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.io.*;

import java.net.*;

public class Grupos extends JFrame implements ActionListener

{

JLabel troca = new JLabel("FTP Troca de Arquivo");

JTextField pergunta = new JTextField(15);

JButton b1 = new JButton("Download");

JTextArea resposta = new JTextArea(5,15);

public Grupos(){

super("Troca de Arquivo");

setSize(250,225);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel pane = new JPanel();

resposta.setLineWrap(true);

resposta.setWrapStyleWord(true);

pane.add(troca);

pane.add(pergunta);

b1.addActionListener(this);

pane.add(b1);

pane.add(resposta);

setContentPane(pane);

show();

}

public static void main (String[] args)

{

new Grupos();

}

public void actionPerformed(ActionEvent aí)

{

try {

soquete s = new soquete("127.0.0.1",2025);

InputStreamReader isr = new InputStreamReader(

s.getInputStream());

BufferedReader is = new BufferedReader(isr);

PrintWriter os = new PrintWriter(new

BufferedOutputStream(s.getOutputStream()), false);

String outLine = pergunta.getText();

os.println(outLine);

os.flush();

String inLine = is.readLine();

if (inLine.length() > 0) {

File f = new File(pergunta.getText());

//f.append(inLine);

resposta.setText("" + inLine);

}

os.close();

is.close();

s.close();

} catch (Exception e) {

resposta.setText("Error: " + e);

}

}

}

//////////////////////////////////////////////////////////

Este é o Servidor:

import java.io.*;

import java.net.*;

public class Central extends Thread {

private ServerSocket sock;

public String nome[];

public Central() {

super("Central Server");

//nome = new nome;

try {

sock = new ServerSocket(2025);

System.out.println("Central Server executando ...");

} catch (IOException e) {

System.err.println("Error: couldn't create soquete.");

System.exit(1);

}

}

public void run() {

soquete client = null;

// Look for clients

while (true) {

// Wait for a client

if (sock == null)

return;

try {

client = sock.accept();

} catch (IOException e) {

System.err.println("Error: couldn't connect to client.");

System.exit(1);

}

// Process Client requests

try {

InputStreamReader isr = new InputStreamReader(client.getInputStream());

BufferedReader is = new BufferedReader(isr);

PrintWriter os = new PrintWriter(new BufferedOutputStream(client.getOutputStream()), false);

String outLine = null;

String filename = null;

// Process and output user input

String inLine = is.readLine();

if (inLine.length() > 0) {

filename=inLine;

System.out.println(filename);

}

File f = new File(filename);

if (f.exists()) {

System.out.println("Achei");

os.print("Achei");

} else {

System.out.println("não Achei");

//os.print(StreamOut, "não existe arquivo");

}

// Clean up

os.close();

is.close();

} catch (Exception e) {

System.err.println("Error: " + e);

e.printStackTrace();

}

}

}

Link para o comentário
Compartilhar em outros sites

não mano, ele simpleslente não está transferindo o arquivo luis.txt q está na pasta (SRV).

Obs: Eu encontrei isto na net, mas estou meio perdido, mas sei que posso implementar estas linhas de comando no trabalho, mas onde???

Link: http://www.inf.ufrgs.br/procpar/disc/inf01008/trabalhos/sem01-1/t2/PDPT2Claus/Performance_JavaIO.htm

Link para o comentário
Compartilhar em outros sites

Eu sei mano eu já estou com ele na máq. este não é o problema, talvez você não esteja me entendendo, mas eu vou ser mais claro. Eu não estou me referindo a um Servidor de Rede, mas eu estou fazendo este programa em minha própria máq. esquece essa estória de rede. Quando eu vou para o Dos e executo o programa, o q está ocorrendo é q ele (O Servidor) está escutando na porta, mas não está me enviando o arquivo q eu estou solicitando. este é o problema. Ele tem q me enviar o arquivo luis.txt q está na pasta dentro do C: chamada SRV. Primeiro eu executo o Servidor para q ele possa ficar ouvindo na porta certo. Depois eu executo o cliente e é aberta a minha interface para q eu possa solicitar o arquivo, correto? Em seguida eu solicito um arquivo luis.txt q está na pasta (SRV) na minha própria máquina, o papel do servidor é me enviar este arquivo luis.txt para a pasta (CLT) na minha própria máq. sakou mano. E na interface do cliente ele tem q escrever o conteúdo do arquivo q ele enviou para pasta (CLT), neste arquivo está escrito: Bom dia. Parece simple mas não é bem assim. Mano desculpa, mas é q eu estou quase pirando por causa deste trabalho, e ainda bem q é o último e não terei mas aula desta cadeira.

Valeu mano... B)

Obs: Se você ainda tem dúvidas salva o cliente e o servidor na tua máq. executa e você vai entender melhor o q estou querendo te passar. Um abraço.

Link para o comentário
Compartilhar em outros sites


String inLine = is.readLine();
if (inLine.length() > 0) {
File f = new File(pergunta.getText());
//f.append(inLine);
resposta.setText("" + inLine);
}

Olhe só esse trecho...

Acho que fica melhor assim...


File f = new File(pergunta.getText());
String inLine;
inLine = is.readLine();
while (inLine.length() > 0) {
//f.append(inLine);
resposta.setText(resposta.Text + inLine); (ou resposta.getText, não sei)
inLine = is.readLine();
}

O que acha???

Link para o comentário
Compartilhar em outros sites

Postado Originalmente por SYSOP@15 jan 2004, 16:19

Eu só quero entender um detalhe: o code q se encontra em cima é o q vai ficar no cliente e o code abaixo é o q vai ficar no servidor??

Foi isso q eu entendi?? Ou o code q está em cima será alterado conforme está embaixo?

Valeu... :rolleyes:

A segunda opção...

Eu acho que o code de cima (original) parece que não funciona...

Substitua pelo de baixo.

Link para o comentário
Compartilhar em outros sites

Olha só mano, eu fiz o q você me pediu mas tive q mudar isto:

File f = new File(pergunta.getText());

String inLine;

inLine = is.readLine();

while (inLine.length() > 0) {

//f.append(inLine);

resposta.setText(resposta.Text + inLine); (ou resposta.getText, não sei)

inLine = is.readLine();

}

e ficou assim:

File f = new File(pergunta.getText());

String inLine;

inLine = is.readLine();

while (inLine.length() > 0) {

//f.append(inLine);

resposta.setText("" + inLine); (ou resposta.getText, não sei)

inLine = is.readLine();

}

O anterior estava dando erro. Mas agora quando executo da o seguinte erro na interface do clinte, onde ele deveria escrever bom dia:

Error:

java.lang.NullPointerExeception

Ele ainda não transfere o arquivo para apasta cliente. O servidor acha, mas não envia.

Link para o comentário
Compartilhar em outros sites

Pessoal, eu consegui e resolvi postar a resposta, pois pode ser q alguém possa vir a precisar.

O lado Cliente ficou assim:

import javax.swing.*;

import java.awt.event.*;

import java.io.*;

import java.net.*;

public class Grupos extends JFrame implements ActionListener

{

JLabel troca = new JLabel("FTP Troca de Arquivo");

JTextField pergunta = new JTextField(15);

JButton b1 = new JButton("Download");

JTextArea resposta = new JTextArea(5,15);

public Grupos()

{

super("Troca de Arquivo");

setSize(250,225);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

JPanel pane = new JPanel();

resposta.setLineWrap(true);

resposta.setWrapStyleWord(true);

pane.add(troca);

pane.add(pergunta);

b1.addActionListener(this);

pane.add(b1);

pane.add(resposta);

setContentPane(pane);

show();

}

public static void main (String[] args)

{

new Grupos();

}

public void actionPerformed(ActionEvent aí)

{

try

{

soquete s = new soquete("127.0.0.1",2025);

InputStreamReader isr = new InputStreamReader(s.getInputStream());

BufferedReader is = new BufferedReader(isr);

PrintWriter os = new PrintWriter(new

BufferedOutputStream(s.getOutputStream()), false);

String outLine = pergunta.getText();

os.println(outLine);

os.flush();

int bit = is.read();

if( bit!=-1 )

{

resposta.setText("Arquivo encontrado...");

//Modificar o caminho abaixo colocando o local desejado para salvar

FileOutputStream salvar = new FileOutputStream(pergunta.getText());

do

{

salvar.write(bit);

bit = is.read();

}

while( bit!=-1 );

salvar.close();

resposta.setText("Download do arquivo concluído");

}

else

{

resposta.setText("Não foi possivel fazer o download do arquivo");

}

os.close();

is.close();

s.close();

}

catch (Exception e)

{

resposta.setText("Error: " + e);

}

}

}

O lado Servidor ficou assim:

import java.io.*;

import java.net.*;

public class Central extends Thread

{

private ServerSocket sock;

public String nome[];

public Central()

{

super("Central Server");

try

{

sock = new ServerSocket(2025);

System.out.println("Central Server executando ...");

}

catch (IOException e)

{

System.err.println("Error: couldn't create soquete.");

System.out.println(e.getMessage());

System.exit(1);

}

}

public void run()

{

System.out.println("run...");

soquete client = null;

// Look for clients

while (true)

{

// Wait for a client

if (sock == null)

{

return;

}

try

{

client = sock.accept();

}

catch (IOException e)

{

System.err.println("Error: couldn't connect to client.");

System.exit(1);

}

// Process Client requests

try

{

InputStreamReader isr = new InputStreamReader(client.getInputStream());

BufferedReader is = new BufferedReader(isr);

PrintWriter os = new PrintWriter(new BufferedOutputStream(client.getOutputStream()), false);

String outLine = null;

String filename = null;

// Process and output user input

String inLine = is.readLine();

System.out.println("arquivo: " + inLine);

if (inLine.length() > 0)

{

filename=inLine;

}

File f = new File(filename);

if (f.exists())

{

System.out.println("Achei");

FileInputStream enviar = new FileInputStream(f);

int bit = enviar.read();

while( bit!=-1 )

{

os.write(bit);

bit = enviar.read();

}

enviar.close();

}

else

{

System.out.println("não Achei");

os.write(-1);

}

// Clean up

os.close();

is.close();

}

catch (Exception e)

{

System.err.println("Error: " + e);

e.printStackTrace();

}

}

}

public static void main(String arqs[])

{

Central c = new Central();

c.start();

}

}

Obrigado pela ajuda. :D

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!