Escolar Documentos
Profissional Documentos
Cultura Documentos
Joo Monlevade
22/11/2014
ndice
1. Introduo.................................................................................................................... 3
2. Objetivo....................................................................................................................... 4
3. Materiais e Mtodos.................................................................................................... .5
4. Testes.......................................................................................................................... ..9
4. Concluso....................................................................................................................11
5. Referencias Bibliogrficas.......................................................................................... 12
1_Introduo
Geralmente a comunicao entre mquinas e algumas vezes em processos na
mesma mquina, feita atravs do uso de sockets. Em que, o socket o canal de
comunicao atravs da qual as aplicaes se comunicam. Existem trs tipos de sockets,
o datagram socket, que envia o pacote sem a confirmao de que o servidor recebeu.
Stream Sockets, envia o pacote com cuidado de que o servidor recebe e que a conexo
est mantida. Raw Sockets, envia o pacote sem utilizar as camadas de transporte, usada
de forma mais rstica na camada de rede (IP) e na Internet Control Message Protocol
(ICMP).
Muitas aplicaes de rede consistem em um par de programas, um programa
cliente e um programa servidor, que residem em dois sistemas finais diferentes. Quando
esses programas so executados, criam-se um processo cliente e um processo servidor,
que se comunica entre si lendo de seus sockets e escrevendo atravs deles [1].
Neste trabalho uma aplicao de uma rede local implementada, em que, um
processo cliente aciona o processo servidor enviando dois nmeros e um operador
aritmtico, o processo servidor tem a tarefa de resolver a operao e enviar para o
processo cliente a resposta.
2_Objetivo
O objetivo deste trabalho implementar uma comunicao entre dois processos,
um denominado cliente e o outro denominado servidor, estes processos esto situados em
sistemas diferentes, a comunicao entre ambos ser feita por meio do mecanismo socket.
O processo cliente deve transmitir dois valores, mais a operao, para o processo servidor
localizado no sistema remoto. O processo servidor receber os valores e a operao e
ento, realizar o clculo enviando a resposta para o processo cliente.
3_Materiais e Mtodos
A primeira deciso tomada foi a maneira em que a aplicao rodaria, TCP ou
UDP. Pelas caractersticas estudas para o modo de conexo TCP, em que, esse tipo de
canal promove uma transmisso confivel de cadeia de bytes, pelo qual fluem dados entre
dois sistemas finais. Assim, a conexo TCP garante que o processo servidor receber cada
byte na ordem que foram enviados. Ela garante uma conexo confivel entre os processos
cliente e servidor. Por isso a maneira escolhida para a transmisso de dados foi pela
conexo TCP. Essa aplicao utilizara socket para a comunicao entre o processo e o
TCP. A figura 1 mostra como essa comunicao funciona.
O cliente inicia o contato com o servidor, por isso, o programa servidor no pode
estar inativo, ele deve estar rodando antes de o cliente tentar iniciar o contato. O cdigo
implementado para o processo cliente mostrado e comentado abaixo.
package TCP;
import java.io.*;
import java.net.*;
class TCPCliente {
public static void main(String argv[]) throws Exception
{
// Declarao das variveis
String num1,num2, op; // cadeia digitada pelo usurio
String resultado; // cadeia obtida do servidor
// Criando conexo
Socket clientSocket = new Socket("localhost", 6789);
// Cria a cadeia de sada conectada ao socket
DataOutputStream outToServer = new DataOutputStream(
clientSocket.getOutputStream());
// Criando cadeia de entrada conectada ao socket
BufferedReader inFromServer =
new BufferedReader(new
InputStreamReader(
clientSocket.getInputStream()));
// Dados do teclado
Essa linha de comando cria o objeto clientSocket do tipo Socket. Ela tambm ativa a
conexo TCP entre cliente e servidor. Aps aceitar a conexo, o servidor redireciona o
cliente para outra porta dessa forma a porta 6789 fica liberada aguardando outra conexo.
DataOutputStream outToServer =
new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer =
new BufferedReader(New InputStreamReader(
clientSocket.getInputStream()));
Esse comendo responsvel por enviar a cadeia num1 para a rede, enviando,
assim, para o servidor.
6
resultado = inFromServer.readLine();
System.out.println("FROM SERVER: " + resultado);
clientSocket.close();
= a + b;
= a - b;
= a * b;
= a / b;
}
result = Integer.toString(resultado);
System.out.println("resultado = " + result);
// Envia os dados para o cliente
outToClient.writeBytes(result + '\n');
}
}
}
Essa linha cria o objeto welcomeSocket, que do tipo ServerSocket. Essa porta
fica esperando a conexo do cliente.
Socket connectionSocket = welcomeSocket.accept();
Essa linha cria um novo socket para a conexo entre o processo servidor e o
processo cliente, assim, outras conexes podem ser realizadas na porta 6789 entre o
servidor e outros clientes.
a = Integer.parseInt(num1);
b = Integer.parseInt(num2);
c = op.charAt(0);
switch(c){
case'+':
resultado
break;
case'-':
resultado
break;
case'*':
resultado
break;
case'/':
resultado
break;
}
= a + b;
= a - b;
= a * b;
= a / b;
Essa parte do cdigo responsvel por fazer a operao matemtica. Ela objetivo
principal desse trabalho.
result = Integer.toString(resultado);
outToClient.writeBytes(result + '\n');
Por fim, essa ultima parte do codigo responsvel por enviar o resultado para o
cliente.
4_ Testes
No primeiro teste uma operao de adio realizada entre os nmeros 15 e 7. O
resultado obtido e mostrado no promp de comando deve ser igual a 22. As figuras 2 e 3
mostram os processos cliente e servidor aps o fim do teste.
10
5_ Concluso
A principal dificuldade encontrada para a realizao do cdigo foi fazer a
operao matemtica no servidor, sendo que os dados recebidos do cliente eram do tipo
string e para realizar a operao foi preciso transforma-los no tipo inteiro.
Por fim, o cdigo teve o desempenho esperado mesmo sendo testado em vrios
usurios remotos diferentes.
11
6_ Referencias Bibliogrficas
[1]Kurose,Ross. REDES DE COMPUTADORES E A INTERNET: Uma Abordagem
Top-Down. 5.ed. Pearson, 2010.
[2]Theo Lins. Redes de Computadores. Joo Monlevade: Instituto de Cincias
Exatas e Aplicadas ICEA.
12