Socket provê a comunicação entre duas pontas (cliente e servidor) – também conhecido como two-way communication – entre dois processos que estejam na mesma máquina (Unix Socket) ou na rede (TCP/IP Sockets). Na rede, a representação de um socket se dá por ip:porta, por exemplo: 127.0.0.1:4477 (IPv4). Um socket que usa rede é um Socket TCP/IP.
O cliente na programação de socket deve saber duas informações:
- Endereço IP do servidor, e
- Número da porta.
Aqui, faremos uma comunicação unilateral entre cliente e servidor. Neste aplicativo, o cliente envia uma mensagem para o servidor, o servidor lê a mensagem e a imprime. Aqui, duas classes estão sendo usadas: Socket e ServerSocket. A classe Socket é usada para comunicar cliente e servidor. Através desta classe, podemos ler e escrever mensagens. A classe ServerSocket é usada no lado do servidor. O método accept () da classe ServerSocket bloqueia o console até que o cliente seja conectado. Após a conexão bem-sucedida do cliente, ele retorna a instância do Socket no lado do servidor.
Um socket é simplesmente um ponto final para comunicações entre as máquinas. A classe Socket pode ser usada para criar um socket.
A classe ServerSocket pode ser usada para criar um socket de servidor. Este objeto é usado para estabelecer comunicação com os clientes.
Criando Servidor
Para criar o aplicativo servidor, precisamos criar a instância da classe ServerSocket. Aqui, estamos usando o número da porta 6666 para a comunicação entre o cliente e o servidor. Você também pode escolher qualquer outro número de porta. O método accept () espera pelo cliente. Se os clientes se conectam com o número de porta fornecido, ele retorna uma instância de Socket.
ServerSocket ss=new ServerSocket(6666);Criando cliente
Socket s=ss.accept();//establishes connection and waits for the client
Para criar o aplicativo cliente, precisamos criar a instância da classe Socket. Aqui, precisamos passar o endereço IP ou nome de host do servidor e um número de porta. Aqui, estamos usando "localhost" porque nosso servidor está rodando no mesmo sistema.
Socket s=new Socket("localhost",6666);
Vamos ver um exemplo simples de programação de socket Java em que o cliente envia um texto e o servidor o recebe e imprime.
Exemplo1 Server.java
import java.io.*;
import java.net.*;
public class MyServer {
public static void main(String[] args){
try{
ServerSocket ss=new ServerSocket(6666);
Socket s=ss.accept();//establishes connection
DataInputStream dis=new DataInputStream(s.getInputStream());
String str=(String)dis.readUTF();
System.out.println("message= "+str);
ss.close();
}catch(Exception e){System.out.println(e);}
}
}
Exemplo1 Client.java
import java.io.*;
import java.net.*;
public class MyClient {
public static void main(String[] args) {
try{
Socket s=new Socket("localhost",6666);
DataOutputStream dout=new DataOutputStream(s.getOutputStream());
dout.writeUTF("Hello Server");
dout.flush();
dout.close();
s.close();
}catch(Exception e){System.out.println(e);}
}
}
Gostou dessa dica? Que tal fazer um treinamento completo em Java o qual vai te tirar do nível zero ao profissional Expert? Investir em conhecimento é o melhor negócio que você pode fazer. Aproveite a promoção de 70% de desconto e comece hoje mesmo a trilhar novos níveis em sua carreira profissional. Assista a um vídeo demonstrativo do treinamento Java Web Fullstack e não perca tempo em se inscrever.
>>> INSCRIÇÕES FORMAÇÃO JAVA WEB FULLSTACK [70% OFF] <<<
Nenhum comentário:
Postar um comentário