Responder ao socket cliente com stream de dados

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.

olha como eu to fazendo:

[code] package br.com.ceuma.client;

import java.io.BufferedInputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
import java.net.UnknownHostException;

public class Client {

public static void main(String[] args) throws InterruptedException {
	
	Socket cliente = null;
	
	try {
		
		cliente = new Socket("127.0.0.1", 5000);
		FileInputStream input = new FileInputStream("docs/atual.doc");
		
		OutputStream out = cliente.getOutputStream();
		BufferedInputStream stream = new BufferedInputStream(input);
		
		byte[] buffer = new byte[1024];
		int length = 0;
		
		while((length = stream.read(buffer, 0, 1024)) != -1) {
			out.write(buffer, 0, length);
		}
		
		out.flush();
		
	} catch (UnknownHostException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (FileNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.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();
	}**/
	
}

}
[/code]

[code]package br.com.ceuma.servidor;

import java.net.ServerSocket;
import java.net.Socket;

public class Servidor {

public static void main(String[] args) {

	ServerSocket server = null;

	try {

		server = new ServerSocket(5000);

		while (true) {
			Socket cliente = server.accept();
			Thread thread = new Thread(new Requisitor(cliente));
			thread.start();
		}
	} catch (Exception e) {
		e.printStackTrace();
	}

}

}

// soffice -headless -nofirstwizard -accept=“socket,host=localhost,port=8100;urp;StarOffice.Service”[/code]

[code]package br.com.ceuma.servidor;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;

import br.com.ceuma.conversor.Conversor;

public class Requisitor implements Runnable {

private Socket cliente;
private FileInputStream doc;

public Requisitor(Socket socket) {
	this.cliente = socket;
}

@Override
public void run() {
	receive();
	Conversor converson = new Conversor(new File("docs/"+cliente.getInetAddress().getHostAddress()+".doc"),new File("pdfs/"+cliente.getInetAddress().getHostAddress()+".pdf"));
	converson.converter();
	//response();
}

public void receive(){
	try {
		
		InputStream in = cliente.getInputStream();
		BufferedInputStream stream = new BufferedInputStream(in);
		FileOutputStream out = new FileOutputStream("docs/"+cliente.getInetAddress().getHostAddress()+".doc");
		
		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();
	}
}

public void response(){
	
	try {
		OutputStream out = cliente.getOutputStream();
		FileInputStream file = new FileInputStream("pdfs/" +cliente.getInetAddress().getHostAddress()+ ".pdf");
		BufferedInputStream stream = new BufferedInputStream(file);
		
		byte[] buffer = new byte[1024];
		int length = 0;
		
		while((length = stream.read(buffer, 0, 1024)) != -1) {
			out.write(buffer, 0, length);
		}
		
		out.flush();
	
	} catch (Exception e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	
}

}
[/code]

so que o metodo de resposta nao funciona :~