Ir ao conteúdo
  • Cadastre-se
Entre para seguir isso  
SYSOP

Java...

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

}

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ele dá algum erro???

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pra compilar esse programa, tem que baixar o Java SDK (java.sun.com)

Você vai ter que aprender um pouco de Java pra fazer isso, OK...

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
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???

Compartilhar este post


Link para o post
Compartilhar em outros sites

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:

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
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.

Compartilhar este post


Link para o post
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

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora
Entre para seguir isso  





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações 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...