Pessoal o meu software basicamente faz o seguinte…
O cliente envia um arquivo doc para o servidor…
No servidor ele faz uma conversão de doc para pdf… e esse pdf… é pra enviar para o cliente novamente.
Esta tudo funcionando perfeitamente até a parte que preciso “responder” com o arquivo em .pdf
meio que nao existe um metodo do socket cliente do tipo:
cliente.waitingForResponse();
onde ele estaria esperando alguma resposta do servidor…
Alguem poderia me ajudar? grato
Mas no seu servidor você vai ter um stream para enviar a resposta ao cliente.
O cliente não precisa ter esse método que você citou, basta após o seu servidor fazer a conversão do arquivo para PDF, pegar o stream de saída do cliente da thread do cliente que enviou o arquivo e usar o stream de saída para enviar de volta ao cliente.
Você já não fez, por exemplo, um chat com socket? No chat o servidor recebe a mensagem e já distribui ela para todos os clientes, você vai fazer algo parecido, só que ao invés de enviar a mensagem para todos clientes registrados no socket, envia apenas para o “dono” do arquivo.
faeldix
olha como eu to fazendo:
packagebr.com.ceuma.client;importjava.io.BufferedInputStream;importjava.io.FileInputStream;importjava.io.FileNotFoundException;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.net.Socket;importjava.net.UnknownHostException;publicclassClient{publicstaticvoidmain(String[]args)throwsInterruptedException{Socketcliente=null;try{cliente=newSocket("127.0.0.1",5000);FileInputStreaminput=newFileInputStream("docs/atual.doc");OutputStreamout=cliente.getOutputStream();BufferedInputStreamstream=newBufferedInputStream(input);byte[]buffer=newbyte[1024];intlength=0;while((length=stream.read(buffer,0,1024))!=-1){out.write(buffer,0,length);}out.flush();}catch(UnknownHostExceptione){// TODO Auto-generated catch blocke.printStackTrace();}catch(FileNotFoundExceptione){// TODO Auto-generated catch blocke.printStackTrace();}catch(IOExceptione){// TODO Auto-generated catch blocke.printStackTrace();}/** try { InputStream in = cliente.getInputStream(); BufferedInputStream stream = new BufferedInputStream(in); FileOutputStream out = new FileOutputStream("pdfs/final.pdf"); byte[] buffer = new byte[1024]; int length = 0; while((length = stream.read(buffer, 0, 1024)) != -1) { out.write(buffer, 0, length); } out.flush(); } catch (IOException e) { e.printStackTrace(); }**/}}
packagebr.com.ceuma.servidor;importjava.io.BufferedInputStream;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.io.InputStream;importjava.io.OutputStream;importjava.net.Socket;importbr.com.ceuma.conversor.Conversor;publicclassRequisitorimplementsRunnable{privateSocketcliente;privateFileInputStreamdoc;publicRequisitor(Socketsocket){this.cliente=socket;}@Overridepublicvoidrun(){receive();Conversorconverson=newConversor(newFile("docs/"+cliente.getInetAddress().getHostAddress()+".doc"),newFile("pdfs/"+cliente.getInetAddress().getHostAddress()+".pdf"));converson.converter();//response();}publicvoidreceive(){try{InputStreamin=cliente.getInputStream();BufferedInputStreamstream=newBufferedInputStream(in);FileOutputStreamout=newFileOutputStream("docs/"+cliente.getInetAddress().getHostAddress()+".doc");byte[]buffer=newbyte[1024];intlength=0;while((length=stream.read(buffer,0,1024))!=-1){out.write(buffer,0,length);}out.flush();}catch(IOExceptione){e.printStackTrace();}}publicvoidresponse(){try{OutputStreamout=cliente.getOutputStream();FileInputStreamfile=newFileInputStream("pdfs/"+cliente.getInetAddress().getHostAddress()+".pdf");BufferedInputStreamstream=newBufferedInputStream(file);byte[]buffer=newbyte[1024];intlength=0;while((length=stream.read(buffer,0,1024))!=-1){out.write(buffer,0,length);}out.flush();}catch(Exceptione){// TODO Auto-generated catch blocke.printStackTrace();}}}