Salve galera.
Como eu faço para abrir uma imagem que está num ServerSocket sem ter q baixa-la ? Como se fosse um mapeamento de rede, entende ?
Estou tentando fazer assim, mas estou tendo q salvar a imagem do ServerSocket no Client Socket.
vejam.
//Inicia ServerSocket
public class IguanaMarketServerSocket {
private static final Integer PORT = 1234;
public IguanaMarketServerSocket(){
begin();
}
public void begin(){
//inicia servidor socket
try {
java.net.ServerSocket server = new java.net.ServerSocket(PORT);
System.out.println("Servidor iniciado, ouvindo a porta " + PORT);
while(true) {
Socket client = server.accept();
new ThreadIguanaMarketServerSocket(client).start();
}
} catch (IOException ex) {
Logger.getLogger(IguanaMarketServerSocket.class.getName()).log(Level.SEVERE, null, ex);
}
}
public static void main(String[] args){
new IguanaMarketServerSocket();
}
}
//aqui uma thread para as conexoes
public class ThreadIguanaMarketServerSocket extends Thread{
private Socket client;
public ThreadIguanaMarketServerSocket(Socket client){
this.client = client;
}
public void run(){
try {
ObjectInputStream entrada = new ObjectInputStream(client.getInputStream());
DataOutputStream saida = new DataOutputStream(client.getOutputStream());
String arquivo = (String)entrada.readObject();
byte buffer[] = new byte[512];
FileInputStream file = new FileInputStream(arquivo);
DataInputStream arq = new DataInputStream(file);
saida.flush();
int leitura = arq.read(buffer);
while(leitura != - 1) {
if(leitura != - 2) {
saida.write(buffer,0,leitura);
}
leitura = arq.read(buffer);
}
System.out.println("Cliente atendido com sucesso: " + arquivo +
client.getRemoteSocketAddress().toString());
entrada.close();
saida.close();
client.close();
} catch (ClassNotFoundException ex) {
Logger.getLogger(ThreadIguanaMarketServerSocket.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(ThreadIguanaMarketServerSocket.class.getName()).log(Level.SEVERE, null, ex);
}
}
}
//aqui o Client Socket.
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:
try{
Socket sk = new Socket("localhost", 1234);
ObjectOutputStream saida = new ObjectOutputStream(sk.getOutputStream());
saida.writeObject("\\Java.png"); //a imagem que quero
DataInputStream entrada = new DataInputStream(sk.getInputStream());
FileOutputStream sarq = new FileOutputStream("/IguanaSistemas/imagem.png"); //tenho q salvar a imagem
byte[] br = new byte[512];
int leitura = entrada.read(br);
while(leitura != -1) {
if(leitura != -2) {
sarq.write(br,0,leitura);
}
leitura = entrada.read(br);
}
saida.close();
entrada.close();
sarq.close();
sk.close();
//ImageIcon img = new ImageIcon(saida);
//image.setIcon(img);
}catch(UnknownHostException e){
}catch(IOException e){
}
}
Quero abrir essa imagem diretamente do ServerSocket sem ter q salva-la, tem como fazer isso ?
obrigado.