Você está na página 1de 9

MINISTÉRIO DA EDUCAÇÃO

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO


PIAUÍ - IFPI
CAMPUS CORRENTE
Técnico de Nível Médio Integrado em Informática
Série: 3° ano Turnos: Manhã/Tarde
Disciplina: Geografia
Professor: Kelson Santos

Programação e
desenvolvimento de
aplicações com TCP

Corrente-PI 20 de junho de 2023


TCP (Transmission Control Protocol) é um protocolo de
comunicação utilizado para estabelecer conexões entre
dispositivos em uma rede de computadores. Na programação e
desenvolvimento de aplicações com TCP, é necessário definir
uma porta de comunicação para que os dispositivos possam se
comunicar através do protocolo TCP.
Em geral, a programação de aplicações TCP envolve a
criação de um servidor que aguarda por conexões de clientes e
a implementação de um cliente que se conecta ao servidor.
Durante a comunicação, os dispositivos trocam mensagens em
formato de pacotes, que são transmitidos através da rede de
computadores.
O desenvolvimento de aplicações com TCP requer
conhecimentos em linguagens de programação, como C, Java
ou Python, além de habilidades em redes de computadores e
protocolos de comunicação. É importante garantir a segurança
e a confiabilidade das conexões TCP, utilizando técnicas como
criptografia e autenticação de usuários.
Há dois tipos de aplicações de rede. Um deles é uma
implementação de um protocolo padrão definido, por exemplo,
em um RFC. Para essa implementação, os programas, cliente
e servidor, devem obedecer às regras dita-as pelo RFC. Por
exemplo, o programa cliente poderia ser uma implementação
do lado do cliente do protocolo
FTP descrito na Seção 2.3 e definido explicitamente no RFC
959 e o programa servidor, uma implementação do protocolo
de servidor FTP também descrito explicitamente no RFC 959.
Se um programador escrever codificação para o programa
cliente e um outro programador independente escrever uma
codificação para o programa servidor e ambos seguirem
cuidadosamente as regras do RFC, então os dois programas
poderão interagir. Realmente, muitas das aplicações de rede
de hoje envolvem comunicação entre programas cliente e
servidor que foram criados por programadores diferentes - por
exemplo, um browser Netscape que se comunica com um
servidor
Web Apache, ou um cliente FTP em um PC que carrega um
arquivo em um servidor FTP UNIX. Quando um programa,
cliente ou servidor, implementa um protocolo definido em um
RFC, deve usar o número de porta associado com o protocolo.
O outro tipo de aplicação cliente-servidor é uma aplicação
proprietária. Nesse caso, o protocolo de camada de aplicação
utilizado pelos programas cliente e servidor não obedecem
necessariamente a nenhum RFC existente. Um único
programador (ou equipe de desenvolvimento) cria ambos os
programas cliente e servidor, e tem completado controle sobre
o que entra no código. Mas, como a codificação não
implementa um protocolo de domínio público, outros
programadores independentes não poderão desenvolver
programas que interajam com a aplicação. Ao desenvolver
uma aplicação proprietária, o programador deve ter o cuidado
de não usar um dos números de porta bem conhecidos,
definidos em RFCs.
Nesta seção e na próxima, examinaremos as questões
fundamentais do desenvolvimento de uma aplicação cliente-
servidor proprietária. Durante a fase de desenvolvimento, uma
das primeiras decisões que o programador deve tomar é se a
aplicação rodará em TCP ou UDP. Lembre-se de que o TCP é
orientado para conexão e prove um canal confiável de cadeia
de bytes, pelo qual fluem dados entre dois sistemas finais. O
UDP não é orientado para conexão e envia pacotes de dados
independentes de um sistema final ao outro, sem nenhuma
garantia de entrega.
Um exemplo de aplicação cliente-servidor em Java
Usaremos a seguinte aplicação cliente-servidor simples para
demonstrar programação de sockets para TCP e UDP:
1. Um cliente lê uma linha a partir de sua entrada padrão
(teclado) e a envia através de seu socket para o servidor.
2. O servidor lê uma linha a partir de seu socket de conexão
3. O servidor converte a linha para letras maiúsculas.
4. O servidor envia a linha modificada ao cliente através de seu
socket de conexão.
5. O cliente lê a linha modificada através de seu socket e
apresenta a linha na sua saída padrão.

A programação de aplicações com UDP (User Datagram


Protocol) envolve a criação de softwares que utilizam o
protocolo de comunicação UDP para transmitir dados entre
dispositivos em uma rede de computadores.
Diferentemente do TCP, o UDP é um protocolo de
comunicação sem conexão, o que significa que os dispositivos
não precisam estabelecer uma conexão antes de transmitir
dados. Em vez disso, os dados são transmitidos em pacotes
independentes, chamados datagramas.
Na programação de aplicações com UDP, é necessário
definir uma porta de comunicação para que os dispositivos
possam se comunicar através do protocolo UDP. Geralmente,
a programação de aplicações UDP envolve a criação de um
servidor que aguarda por pacotes de dados de clientes.
Para garantir a integridade dos dados transmitidos através do
protocolo UDP, é possível utilizar técnicas como checksum,
que verifica a integridade dos pacotes de dados. A
programação de aplicações com UDP requer conhecimentos
em linguagens de programação, como C, Java ou Python,
além de habilidades em redes de computadores e protocolos
de comunicação.
As aplicações com UDP são ideais para aplicações que
exigem alta velocidade de transmissão de dados, como jogos
online e transmissão de mídia em tempo real. No entanto,
devido à falta de conexão entre os dispositivos, o UDP pode
ser menos confiável do que o TCP em termos de garantir a
entrega de dados.
Um exemplo de aplicação cliente-servidor em Java é um chat
simples. Neste exemplo, um servidor Java é criado para
gerenciar as conexões dos clientes e encaminhar as
mensagens entre eles.

O servidor Java utiliza a classe ServerSocket para criar um


socket que aguarda por conexões de clientes. Quando um
cliente se conecta ao servidor, o servidor cria uma nova thread
para gerenciar a conexão do cliente.
O cliente Java, por sua vez, utiliza a classe Socket para se
conectar ao servidor. Uma vez conectado, o cliente pode
enviar mensagens para o servidor, que encaminhará as
mensagens para outros clientes conectados.
Abaixo, segue um exemplo básico de código para um
servidor e um cliente de chat em Java:

*Servidor:*

import java.io.*;
import java.net.*;

public class ChatServer {


public static void main(String[] args) throws IOException {
ServerSocket serverSocket = new ServerSocket(8080);
System.out.println("Servidor iniciado na porta 8080...");
while (true) {
Socket clientSocket = serverSocket.accept();
System.out.println("Conexão estabelecida com " +
clientSocket);
new Thread(new ChatHandler(clientSocket)).start();
}
}
}

class ChatHandler implements Runnable {


private Socket clientSocket;
public ChatHandler(Socket socket) {
this.clientSocket = socket;
}
public void run() {
try {
BufferedReader in = new BufferedReader(new
InputStreamReader(clientSocket.getInputStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
System.out.println(inputLine);
}
} catch (IOException e) {
System.out.println("Erro ao ler a mensagem do cliente: "
+ e.getMessage());
}
}
}

*Cliente:*

import java.io.*;
import java.net.*;
public class ChatClient {
public static void main(String[] args) throws IOException {
Socket socket = new Socket("localhost", 8080);
PrintWriter out = new PrintWriter(socket.getOutputStream(),
true);
BufferedReader input = new BufferedReader(new
InputStreamReader(System.in));
String userInput;
while ((userInput = input.readLine()) != null) {
out.println(userInput);
}
}
}

Neste exemplo, o servidor escuta na porta 8080 e o cliente se


conecta a ele através do localhost (127.0.0.1). Quando um
cliente envia uma mensagem, o servidor recebe a mensagem e
a repassa para os outros clientes conectados.
Corrente-PI 20 de junho de 2023

Você também pode gostar