estou tentando trabalhar com socket queria q alguem potasse um exemplo com socket
Ajuda em socket
1 Resposta
fiz um trabalho na faculdade talvez te ajude.
E para a transferência de arquivos usando socket java. E bem simples, talvez ajude. flw
/*
Cliente que recebe um arquivo de um servidor utilizando TCP
Tiago da Costa Norberto
27/06/2010
*/
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.net.Socket;
public class Client {
public static void main(String[] args) {
System.out.println("\n\nCliente inicializado....");
//Declaro o socket cliente
Socket socket = null;
//criar um fluxo de saida de dados
BufferedInputStream in = null;
//Declaro o leitor para a entrada de dados
BufferedOutputStream out =null;
//arquivo utilizado na transfericia
File arquivo= new File("novosockets.pdf");
try{
//Cria o socket com o recurso desejado na porta especificada
socket = new Socket("127.0.0.1",7000);
//associa um fluxo de entrada ao socket
in =new BufferedInputStream(socket.getInputStream());
//associa um fluxo de saida a um arquivo
out =new BufferedOutputStream(new FileOutputStream(arquivo));
//percorreer a entrada e ir escrevendo em
int len = 0;
byte[] buffer =new byte[2048];
System.out.println("Recebendo arquivo.");
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
System.out.println("Arquivo recebido");
//imprime os dados do arquivo
System.out.println("Nome do arquivo: "+arquivo.getName());
System.out.println("Tamanho do arquivo: "+arquivo.length());
//Trata possíveis exceções
}catch(IOException e){
System.out.println("Erros com o socket.");
//bloco que devolve os recursos para o sistema
}finally{
try{
//fecha o fluxo
out.close();
out.flush();
//Encerra o socket cliente
socket.close();
}catch(IOException e){}
}
}
}
Servidor
/*
Srvidor que envia um arquivo para um cliente utilizando TCP
Tiago da Costa Norberto
27/06/2010
*/
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.InetAddress;
import java.net.ServerSocket;
import java.net.Socket;
public class Servidor {
public static void main(String[] args) {
//Declaro o ServerSocket que fica escutando canal , usando o acept
ServerSocket serverSocket=null;
//Declaro o Socket para ser utilizado na comunicação de comunicação
Socket socket= null;
//fluxo de saida para ser associado a um arquivo
BufferedInputStream in =null;
//cria um objeto para associar com o envio de dados do socket
BufferedOutputStream out = null;
//arquivo utilizado na transfericia
File arquivo= new File("sockets.pdf");
try{
System.out.println("\n\nServidor esperando...");
//Cria o serverSocketerSocket na porta 7000 se estiver disponível
serverSocket = new ServerSocket(7000);
//Aguarda uma conexão na porta especificada e cria retorna o socket que irá comunicar com o cliente
//este socket sea utilizado para enviar e receber daddos
socket = serverSocket.accept();
//informações sobre a conexão
InetAddress info = socket.getInetAddress();
String ip = info.getHostAddress();
String hostname = info.getHostName();
System.out.println("Conectado ao ip: "+ip +" com o host de nome: "+hostname);
//parte de manipulação do arquivo
try{
in =new BufferedInputStream( new FileInputStream(arquivo));
}
catch(IOException e){
//Imprime uma notificação na saída padrão caso haja algo errado.
System.out.println("Erro na abertura do arquivo.");
}
//cria um objeto para associar com o envio de dados do socket
out = new BufferedOutputStream(socket.getOutputStream());
//percorrer o arquivo e ir enviando para cliente
int len = 0;
byte[] buffer =new byte[2408];
System.out.println("Nome do arquivo: "+arquivo.getName());
System.out.println("Tamanho do arquivo: "+arquivo.length());
System.out.println("Iniciando a transferencia do arquivo");
//contar o tempo da transfericia
long tempoInicio = System.currentTimeMillis();
while ((len = in.read(buffer)) > 0) {
out.write(buffer, 0, len);
}
long tempoFinal = System.currentTimeMillis();
long tempo = (tempoFinal -tempoInicio);
System.out.println("Finalizado transferencia do arquivo, gastando "+tempo + "ms \n Transferencia finalizada");
//trata possíveis excessões de input/output. Note que as excessões são as mesmas utilizadas para as classes de java.io
}catch(IOException e){
//Imprime uma notificação na saída padrão caso haja algo errado.
System.out.println("Erro de execução com o socket");
//bloco que devolve os recursos para o sistema
//devolve o recurso para o sistema
}finally{
try{
out.flush();
//Encerro o socket de comunicação
socket.close();
//Encerro o serverSocketerSocket
serverSocket.close();
}catch(IOException e){
System.out.println("Erro ao fechar o arquivo");
}
}
}
}
Criado 26 de agosto de 2010
Ultima resposta 26 de ago. de 2010
Respostas 1
Participantes 2
Alura POO: o que é programação orientada a objetos? Aprenda os conceitos básicos da programação orientada a objetos, como classes, objetos, herança, encapsulamento e polimorfismo, com exemplos.
Casa do Codigo Inteligencia Artificial e ChatGPT: Da revolucao dos... Por Fabricio Carraro — Casa do Codigo