Comunicação cliente/servidor em java

8 respostas
R

[color=“blue”]Boa tarde pessoal, tenho um trabalho pra fazer na faculdade da matéria de comunicação de dados, e achei alguns exemplos em java, porém gostaria de inserir comentários nesses algoritmos, mas como meu conhecimento não é vasto em java, fiquei meio perdido, então gostaria da ajuda de vocês, será que vocês podem inserir comentários nas principais linhas dos algoritmos abaixo?
Agradeço desde já.[/color]

import java.io.*; import java.net.*; class TCPClient { public static void main(String argv[]) throws Exception { Sting sentence; Sting modifiedSentence; BufferedReader inFromUser = new BufferedReader( new InpuStreamReader()System.in)); Socket clientSocket = new Socket("Hostname", 6789); DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream()); BufferedReader inFromUser = new BufferedReader(new InpuStreamReader(clientSocket.getOutputStream())); sentence = inFromUser.readLine(); outToServer.writeBytes(sentence + '\n'; modifiedSentence = inFromServer.readLine(); System.out.println("From server: " + modifiedSentence); clientSocket.close(); } }

import java.io.*; import java.net.*; import java.util.*; classWebServer { public static void main(String argv[]) throws Exception { String RequestMessageLine; String fileName; ServerSocket listenSocket = new ServerSocket(6789); Socket connectionSoquet = listenSocket.accept(); BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream())); DataOutputStream OutToClient = new DataOutputStream(connectionSoquet.getOutputStream()); requestMessageLine = inFromClient.readLine(); StringTokenizer tokenizedLine = new StringTokenizer(requestMessageLine); if (tokenizedLine.nextToken().equals("Get")) | fileName = tokenizedLine.nextToken(); if (fileName.startsWith("/") == true) fileName = fileName.substring(1); File file = new File(fileName); Int numOfBytes = (int) file.length(); FileInputStream inFile = new FileInputStream(fileName); byte[ ] fileInBytes = new byte[numOfBytes]; inFile.read(fileInBytes); outToClient.writeBytes("HTTP/1.0 200 Document Follows\r\n") if (fileName.endsWith(".jpg")) outToClient.writeBytes(""Content-Type: image/jpeg\r\n"); if (fileName.endsWith(".gif")) outToClient.writeBytes("Content-Type: image/gif\r\n"); outToClient.writeBytes("\r\n"); outToClient.writeBytes(fileInBytes, 0, numOfBytes); connectionSoket.close(); } else System.out.println("Bad Request Message"); } }

8 Respostas

V

ahh malandrão… daí vc pega e entrega como se vc tivesse feito… putz q feio!!

R

Cara, não quer ajudar, não atrapalha, não falte com respeito também, saiba que sempre que faço pesquisas coloco referências ao autor, você que deve copiar as coisas e diz que você que fez!
Peço ajuda ao pessoal sério aqui do fórum, porque de babaca já basta esse aí!

V

magoei :cry:

se vc pedir desculpas eu comento pra ti, mas tu tem q prometer q não vai entregar como se fosse seu… ok?!

R

“viecili”:
magoei :cry:

se vc pedir desculpas eu comento pra ti, mas tu tem q prometer q não vai entregar como se fosse seu… ok?!


Com certeza! Até mesmo porque o professor conhece os alunos que tem e sabe que eu não criaria algoritmos desse tipo, nem os comentários.
Inclusive, na parte de referências, o endereço desse tópico estará presente, incluindo seu nome.

V

vamos lá então:

import java.io.*;
import java.net.*;
/** Classe cliente que conecta ao servidor via Socket */
class TCPClient {
   public static void main(String argv[]) throws Exception
   {
      Sting sentence;
      Sting modifiedSentence;

      // leitor da entrada padrão
      BufferedReader inFromUser = new BufferedReader( new InpuStreamReader(System.in));

      // cria socket e conecta a localhost na porta 6789
      Socket clientSocket = new Socket("localhost", 6789);

      // obtem o stream para enviar dados ao servidor
      DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());

      // obtem o stream para receber dados do servidor
      BufferedReader inFromServer = new BufferedReader(new InpuStreamReader(clientSocket.getInputStream()));

      // lê da entrada os dados enviados pelo usuario
      sentence = inFromUser.readLine();

      // envia os dados recebidos do usuario mais quebra de linha para o servidor
      outToServer.writeBytes(sentence + '\n');

      // recebe do servidor a sentenca modificada
      modifiedSentence = inFromServer.readLine();

      // escreve na saída padrão a sentenca modificada
      System.out.println("From server: " + modifiedSentence);

      // fecha conexão com o servidor
      clientSocket.close();
   }
}
import java.io.*;
import java.net.*;
import java.util.*;
/** Classe servidor web via Socket */
classWebServer {
   public static void main(String argv[]) throws Exception
   {
      String RequestMessageLine;
      String fileName;

      // abre um socket servidor para escutar na porta 6789
      ServerSocket listenSocket = new ServerSocket(6789);

      // pára aqui e fica aguardando conexão de algum cliente
      Socket connectionSoquet = listenSocket.accept();

      // recebeu conexão
      // obtem o stream para receber dados do cliente
      BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));

      // obtem o stream para escrever para o cliente
      DataOutputStream OutToClient = new DataOutputStream(connectionSoquet.getOutputStream());

      // recebe a instrucao de requisicao do cliente
      requestMessageLine = inFromClient.readLine();

      // separa a requisicao em partes (separadas por espaco)
      StringTokenizer tokenizedLine = new StringTokenizer(requestMessageLine);

      // se o primeiro pedaco for 'Get' o nome do arquivo recebe o pedaco seguinte
      if (tokenizedLine.nextToken().equals("Get")) {
         fileName = tokenizedLine.nextToken();

      // se o nome do arquivo comecar com '/', retira a barra
      if (fileName.startsWith("/"))
            fileName = fileName.substring(1);

         // abre o arquivo local
         File file = new File(fileName);

         // lê o tamanho do arquivo
         Int numOfBytes = (int) file.length();

         // lê o arquivo de uma vez para a memoria
         FileInputStream inFile = new FileInputStream(fileName);
         byte[ ] fileInBytes = new byte[numOfBytes];
         inFile.read(fileInBytes);

         // escreve o cabecalho da resposta para o cliente
         outToClient.writeBytes("HTTP/1.0 200 Document Follows\r\n")

         // verifica a extensão do documento e ajusta o content-type da resposta         
         if (fileName.endsWith(".jpg"))
           outToClient.writeBytes(""Content-Type: image/jpeg\r\n");
         if (fileName.endsWith(".gif"))
           outToClient.writeBytes("Content-Type: image/gif\r\n");

         // escreve todo o conteúdo do arquivo local na resposta
         outToClient.writeBytes("\r\n");
         outToClient.writeBytes(fileInBytes, 0, numOfBytes);
         outToClient.flush();

         // fecha a conexao com o cliente
         connectionSoket.close();
      } else {
         // não sendo um 'Get' escreve a msg na saida padrao
         System.out.println("Bad Request Message");
      }
   }
}

Caro rasta, tá aí os comentários e algumas modificações no código, mas tem vários problemas nesse código aí, é bastante provável que o cliente e o servidor fiquem bloqueados caso ocorra algum problema na comunicação.

Desculpe a brincadeira,
Abraço

R

Obrigadão aí!
Esse código tirei de um livro de comunicação de dados muito respeitado na área: James F. Kurose & Keith W. Ross. Redes de Computadores e a Internet - Uma nova abordagem. Addison Wesley. Tradução para o português da 1a. edição do livro original ingles, revisto pelo Prof. Dr. Wagner Zucchi da EPUSP.
Mais uma vez obrigado!

:brinde:

V

com certeza os autores/revisores deste livro são Engenheiros e não ‘Cientistas da Computação’

L

gostaria que me ajudassem… não tenho noção alguma de java, mas meu professor de redes 1 pediu que fizessemos a correção necessaria nesse codigo.
a intenção é que o servidor envie mensagens para o cliente. alguem pode me ajudar?

Criado 4 de maio de 2005
Ultima resposta 12 de nov. de 2009
Respostas 8
Participantes 3