Exception em socket android

6 respostas
F

esta dando uma Exception justamente na linha 40 e ainda não sei que danado é já fiz debug e tudo, alguma alma caridosa poderia me ajudar

Agradeço desde já pela atenção.

public void opcao() {
		setContentView(R.layout.opcao);

		btconectar_ao_servidor = (Button) findViewById(R.id.btconectar_ao_servidor);
		btcriar_servidor = (Button) findViewById(R.id.btcriar_servidor);
		btVoltarOpcao = (Button) findViewById(R.id.btVoltarOpcao);

		btconectar_ao_servidor.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				setContentView(R.layout.cliente);

				edIp = (EditText) findViewById(R.id.edIp);
				edporta = (EditText) findViewById(R.id.edporta);
				btconectar = (Button) findViewById(R.id.btconectar);
				btVoltarCliente = (Button) findViewById(R.id.btVoltarCliente);

				btVoltarCliente.setOnClickListener(new View.OnClickListener() {

					@Override
					public void onClick(View v) {
						opcao();
					}
				});

				btconectar.setOnClickListener(new View.OnClickListener() {

					@Override
					public void onClick(View v) {
						if (edIp != null & edporta != null) {
							Socket socket = null;
							DataOutputStream dataOutPutStream = null;
							DataInputStream dataInPutStream = null;

							String ip = edIp.getText().toString();
							int porta = Integer.parseInt(edporta.getText().toString());

							try {
								socket = new Socket(ip, porta);
								AlertDialog.Builder dialogo = new AlertDialog.Builder(
										MainActivity.this);
								dialogo.setTitle("Conectado:");
								dialogo.setMessage("Coneção realizada com sucesso");
								dialogo.setNeutralButton("OK", null);
								dialogo.show();

								setContentView(R.layout.chat);

								btsair = (Button) findViewById(R.id.btsair);
								btsair.setOnClickListener(new View.OnClickListener() {

									@Override
									public void onClick(View v) {
										opcao();

									}
								});

								textodeentrada = (EditText) findViewById(R.id.textodeentrada);
								textosaida = (EditText) findViewById(R.id.textosaida);

								dataOutPutStream = new DataOutputStream(socket
										.getOutputStream());
								dataInPutStream = new DataInputStream(socket
										.getInputStream());
								dataOutPutStream.writeUTF(textosaida.getText()
										.toString());

								@SuppressWarnings("deprecation")
								String stringLida = dataInPutStream.readLine();
								textodeentrada.setText(stringLida);

							} catch (Exception e) {
								AlertDialog.Builder dialogo = new AlertDialog.Builder(
										MainActivity.this);
								dialogo.setTitle("Erro:");
								dialogo.setMessage("Excepition Classe Main, Metodo opcao();2");
								dialogo.setNeutralButton("OK", null);
								dialogo.show();
								e.printStackTrace();
							} finally {

								try {
									if (socket != null) {
										socket.close();
									}

									if (dataOutPutStream != null) {
										dataOutPutStream.close();
									}

									if (dataInPutStream != null) {
										dataInPutStream.close();
									}
								} catch (Exception e) {
									e.printStackTrace();
								}

							}

						}
					}
				});

			}
		});

6 Respostas

W

Quando capturar a exceção, imprima o erro, utiliza o comando:

e.printStackTrace();

wiliamps

F

Obrigado pela dica amigo, mas já tem isso na linha 81 e não esta imprimindo nada…

W

Adiciona um catch de Throwable:

} catch (Throwable e) {
				e.printStackTrace();
			}

wiliamps

F

Mesmo implementando o Throwable não consegui detectar o erro, ai penssei vou fazer tudo dinovo e agora com servidor android em vez de java (na verdade vou precisar de um servidor android mesmo), minha nescessidade é a seguinte estou fazendo um projeto de um jogo que vou precisar de rede para mandar o valor de ataque e o valor de HP do personagem para o outro tablet, no caso irei usar cliente android e servidor android.

Só que desta forma nada funciona:
O cliente continua com o mesmo erro
E o servidor NÂO RODA.

Agradeço pela atenção desde já.

package com.example.clienteservidor2;

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

import android.app.Activity;
import android.app.AlertDialog;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

	Button btcliente, btservidor, btconectar;
	EditText edip, edporta, edtextosaida, textoentrada;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		inicio();
	}

	public void inicio() {

		btcliente = (Button) findViewById(R.id.btcliente);
		btservidor = (Button) findViewById(R.id.btservidor);

		btcliente.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				setContentView(R.layout.cliente);
				cliente();
			}
		});

		btservidor.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				setContentView(R.layout.servidor);
				try {
					servidor();
				} catch (IOException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}

		});

	}

	private void cliente() {
		edip = (EditText) findViewById(R.id.edip);
		edporta = (EditText) findViewById(R.id.edporta);
		btconectar = (Button) findViewById(R.id.btconectar);

		btconectar.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				if (edip != null & edporta != null) {
					Socket socket = null;
					DataOutputStream dataOutPutStream = null;
					DataInputStream dataInPutStream = null;

					String ip = edip.getText().toString();
					int porta = Integer.parseInt(edporta.getText().toString());

					try {
						System.out.println("Passo aqui 1");
						socket = new Socket(ip, porta);
						System.out.println("passo aqui 2");
						AlertDialog.Builder dialogo = new AlertDialog.Builder(
								MainActivity.this);
						dialogo.setTitle("Conectado:");
						dialogo.setMessage("Coneção realizada com sucesso");
						dialogo.setNeutralButton("OK", null);
						dialogo.show();

						setContentView(R.layout.clientechat);

						textoentrada = (EditText) findViewById(R.id.textoentrada);
						edtextosaida = (EditText) findViewById(R.id.edtextosaida);

						dataOutPutStream = new DataOutputStream(socket.getOutputStream());
						dataInPutStream = new DataInputStream(socket.getInputStream());
						dataOutPutStream.writeUTF(edtextosaida.getText().toString());

						@SuppressWarnings("deprecation")
						String stringLida = dataInPutStream.readLine();
						textoentrada.setText(stringLida);

					} catch (Exception e) {
						AlertDialog.Builder dialogo = new AlertDialog.Builder(
								MainActivity.this);
						dialogo.setTitle("Erro:");
						dialogo.setMessage("Excepition Classe Main, Metodo opcao();2");
						dialogo.setNeutralButton("OK", null);
						dialogo.show();
						e.printStackTrace();
					} finally {

						try {
							if (socket != null) {
								socket.close();
							}

							if (dataOutPutStream != null) {
								dataOutPutStream.close();
							}

							if (dataInPutStream != null) {
								dataInPutStream.close();
							}
						} catch (Exception e) {
							e.printStackTrace();
						}

					}

				}

			}
		});

	}

	private void servidor() throws IOException {
		ServerSocket serverSocket = new ServerSocket(1234);
		Socket socket;
		
		while(true){
			socket = serverSocket.accept();
			DataOutputStream dataOutputStream = new DataOutputStream(socket.getOutputStream());
			DataInputStream dataInputStream = new DataInputStream(socket.getInputStream());
			
			dataOutputStream.writeBytes("Servidor: " + dataInputStream.readUTF());
			dataOutputStream.flush();
			
			AlertDialog.Builder dialogo = new AlertDialog.Builder(
					MainActivity.this);
			dialogo.setTitle("Mensagem");
			dialogo.setMessage("A mensagem foi enviada com sucesso!!!");
			dialogo.setNeutralButton("OK", null);
			dialogo.show();
			
			dataOutputStream.close();
			socket.close();
		}
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.activity_main, menu);
		return true;
	}

}
ViniGodoy

Por favor, não destaque seu tópico com tags óbvias, como [AJUDA], [DÚVIDA], [JAVA], etc…

F

Descobrir, tem que fazer uma thread a parte.

Obrigado a todos aqueles que me ajudaram

Criado 2 de março de 2013
Ultima resposta 7 de mar. de 2013
Respostas 6
Participantes 3