Sockets -> nao consigo dar uma 'resposta' pro meu cliente

1 resposta
faeldix

segue:

package br.com.ceuma.server;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

import br.com.ceuma.converter.Converter;

public class Server {
	
	public static void main(String[] args) {
		
		try {
			
			ServerSocket server = new ServerSocket(5000);
			
			while(true){
				Socket cliente = server.accept();
				Thread thread = new Thread(new Converter(cliente));
				thread.start();
			}
			
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

// soffice.exe -accept=socket,host=localhost,port=8100;urp;StarOffice.ServiceManager
package br.com.ceuma.client;

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

public class Client {

	public static void main(String[] args) throws Exception {
		
		try {
			
			Socket client = new Socket("127.0.0.1", 5000);
			
			OutputStream out = client.getOutputStream();
			InputStream in = new FileInputStream("C:\\autistmo.docx");
			
			BufferedInputStream buffer = new BufferedInputStream(in, 1024);
			
	        byte[] b = new byte[1024];
	        int len = 0;
	        int bytcount = 1024;
			
	        while ((len = buffer.read(b, 0, 1024)) != -1) {
	            bytcount = bytcount + 1024;
	            out.write(b, 0, len);
	        }
	        
	        // resposta
	        
			BufferedInputStream buffer2 = new BufferedInputStream(in, 1024);
			FileOutputStream out2 = new FileOutputStream("docs/final.doc");
			
	        while ((len = buffer2.read(b, 0, 1024)) != -1) {
	            bytcount = bytcount + 1024;
	            out2.write(b, 0, len);
	        }
	        
	        out2.close();
	        buffer2.close();
	        
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

}

Converter

package br.com.ceuma.converter;

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.ConnectException;
import java.net.Socket;

import br.com.ceuma.connection.ConnectionManager;

import com.artofsolving.jodconverter.DocumentConverter;
import com.artofsolving.jodconverter.openoffice.connection.OpenOfficeConnection;
import com.artofsolving.jodconverter.openoffice.converter.OpenOfficeDocumentConverter;

public class Converter implements Runnable {
	
	private Socket socket;
	private OpenOfficeConnection manager;
	private File doc;
	private File pdf;
	
	public Converter(Socket socket) {
		this.socket = socket;
		this.doc = new File("docs/atual.doc");
		this.pdf = new File("pdf/atual.pdf");
	}
	
	private void getDocArchive(){
		
		try {
			
			InputStream in = socket.getInputStream();
			BufferedInputStream buffer = new BufferedInputStream(in, 1024);
			
	        byte[] b = new byte[1024];
	        int len = 0;
	        int bytcount = 1024;
			
			FileOutputStream out = new FileOutputStream("docs/atual.doc");
			
	        while ((len = buffer.read(b, 0, 1024)) != -1) {
	            bytcount = bytcount + 1024;
	            out.write(b, 0, len);
	        }
	        
	        out.flush();
	        
	        //out.close();
	        //buffer.close();
			
		} catch (IOException e) {
			System.out.println("Ocorreu um erro no recebimento do arquivo");
		}
	}
	
	private void start(){
		
		try {
			this.manager = ConnectionManager.getCurrentInstance();
			this.manager.connect();
		} catch (ConnectException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	private void stop(){
		manager.disconnect();
	}
	
	public void converter(){

		start();
		
		DocumentConverter converter = new OpenOfficeDocumentConverter(manager);
	    converter.convert(doc, pdf);

	    stop();
	    
	}

	@Override
	public void run() {
		getDocArchive();
		converter();
		reponse();
	}

	private void reponse() {
		try {
			OutputStream out = socket.getOutputStream();
			InputStream in = new FileInputStream(pdf);
			
			BufferedInputStream buffer = new BufferedInputStream(in, 1024);
			
	        byte[] b = new byte[1024];
	        int len = 0;
	        int bytcount = 1024;
			int i = 0;
			
	        while ((len = buffer.read(b, 0, 1024)) != -1) {
	            bytcount = bytcount + 1024;
	            out.write(b, 0, len);
	        }
	        
	        out.flush();
	        out.close();
	        buffer.close();
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println(e.getMessage());
		}
	}

}

Exception:

java.net.SocketException: Connection reset by peer: socket write error at java.net.SocketOutputStream.socketWrite0(Native Method) at java.net.SocketOutputStream.socketWrite(Unknown Source) at java.net.SocketOutputStream.write(Unknown Source) at br.com.ceuma.converter.Converter.reponse(Converter.java:107) at br.com.ceuma.converter.Converter.run(Converter.java:90) at java.lang.Thread.run(Unknown Source)

alguem da uma ajuda aeh?

1 Resposta

faeldix

ninguem pessoal?

Criado 28 de outubro de 2012
Ultima resposta 28 de out. de 2012
Respostas 1
Participantes 1