Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

TestandoSistemas

Socket

Recommended Posts

Em primeiro lugar estou usando um codigo que desconheço, copiado da internet. Não conheço bem as classes que o java usa para conexão por sockets, gostaria de saber porque minha execução está parando.

Estou fazendo uma comunicação com flash atraves de sockets, o codigo executa uma vez, envia a mensagem para o flash, o while (que é infinito) para na segunda execução no metodo .readLine()

 

Vejam o codigo todo:

 

package testesockets;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;

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

public class ServerSimples {

	private ServerSocket server;
	private Socket client;
	private BufferedReader in;
	private PrintWriter out;

	public void start() {
		create();
		run();
	}

	private void create() {
		try {
			server = new ServerSocket(5555);
		} catch (Exception e) {
			e.printStackTrace();
			System.exit(-1);
		}
	}

	// sets up a server socket at PORT and listens to it
	public void run() {
		try {
			client = server.accept();
			in = new BufferedReader(new InputStreamReader(client.getInputStream()));
			out = new PrintWriter(client.getOutputStream());
		} catch (Exception e) {
			e.printStackTrace();
			System.exit(0);
		}

		String line;
		while (true) {
			
			try {
				line = in.readLine(); // <<<============ a execução para aqui na segunda execução do while==========
				if (line != null) {

					System.out.println("Line received: " + line);

					out.write("Line was received." + line);

					out.flush();
				}
			} catch (Exception e) {
				e.printStackTrace();
				System.exit(0);
				
			}
		   

		}
	}

	protected void finalize() {
		try {
			in.close();
			server.close();
		} catch (IOException e) {
			e.printStackTrace();
			System.exit(-1);
		}
	}

	/**
	 * Entry-point.
	 */
	public static void main(String[] args) {
		try {
			ServerSimples server = new ServerSimples();
			server.start();
		} catch (Exception e) {
			// if we fail, print wtf happened and exit
			e.printStackTrace();
			System.exit(0);
		}
	}
}

Grande abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual é a excessão que está sendo informada, posta pra gente, pois facilitaa identificação.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Titulo editado.

 

De: Qual o motivo dessa execução parar?, socket

 

Para: Socket

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual é a excessão que está sendo informada, posta pra gente, pois facilitaa identificação.

não está parando o programa, apenas a execução. portanto não tem exessão.

Quando fecho o cliente, a execução volta a funcionar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho isso, o firewall não está bloqueando a porta que você está utilizando?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estranho isso, o firewall não está bloqueando a porta que você está utilizando?

realmente é estranho, não é o firewall, porque como eu disse, a primeira execução do while vai normalmente, e existe a troca de informações, do flash pro java e do java pro flash. A parada acontece na segunda execução do while, depois que já houve a primeira comunicação.

A conexão continua, porque se eu parar o java, o flash acusa que a conexão foi perdida.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.