Страница 1 из 1

Ошибка при создании сокета

Добавлено: 05 май 2013, 13:54
bundos
Привет! Вот код MainActivity:
[syntax=java]package com.example.lab1;

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

import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends Activity {

Button Start;

EditText Text;

Socket socket;

public static String Serv_Addr="localhost";

public static int PORT=31007;

@Override
protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Start= (Button) findViewById(R.id.StartButton);

Text= (EditText) findViewById(R.id.EText1);

OnClickListener ocl= new OnClickListener(){

@Override
public void onClick(View v) {
Thread ct=new Thread(doInThread);
//Thread ct1=new Thread
ct.start();
}

};
Start.setOnClickListener(ocl);
}


private Runnable doInThread = new Runnable() {
public void run() {
try{
InetAddress inetAddress = InetAddress.getByName(Serv_Addr);
Log.d("CLIENT",inetAddress.toString());
socket=new Socket(inetAddress,PORT);
Log.d("CLIENT",socket.toString());

}
catch(IOException e){
System.err.println("Socket creating failed");
}
}
};


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

}[/syntax]
Проблема в том, что при создании сокета (по нажатию на Start) вылетает экспешн. Я дописал в AndroidManifest.xml [syntax=java]<uses-permission android:name="android.permission.INTERNET" />[/syntax], но не помогло. Подскажите в чем тут дело? Спасибо!

Re: Ошибка при создании сокета

Добавлено: 05 май 2013, 14:38
rezak90
Сокеты в Андроиде))) Что хоть за ошибка? А то в праздничные дни у меня куда то пропал всевидящий дар...

Re: Ошибка при создании сокета

Добавлено: 05 май 2013, 14:44
bundos
rezak90 писал(а):Сокеты в Андроиде)))
А что, это что-то плохое?
rezak90 писал(а):Что хоть за ошибка?
Я не знаю, что за ошибка. В логкат мне вот че выплевывает:
05-05 12:59:45.342: D/CLIENT(490): localhost/127.0.0.1
05-05 12:59:45.443: W/System.err(490): Socket creating failed

Re: Ошибка при создании сокета

Добавлено: 05 май 2013, 15:44
Mikhail_dev
Сокеты в Андроиде)))
А через что, к примеру, можно держать соединение в андроиде?

P.S. это не стектрейс, это какой-то огрызок.

Re: Ошибка при создании сокета

Добавлено: 05 май 2013, 15:59
rezak90
А через что, к примеру, можно держать соединение в андроиде?
Через сокеты, просто редко встречаю реализацию сокетов на Андроиде. И из-за этого складывается мнение что можно обойтись без них...

Re: Ошибка при создании сокета

Добавлено: 05 май 2013, 17:40
bundos
no-- писал(а): P.S. это не стектрейс, это какой-то огрызок.
Не понял, у меня для клиента больше ничего нет. Может нужно выложить реализацию сервера?

Re: Ошибка при создании сокета

Добавлено: 05 май 2013, 22:07
bundos
Забыл сказать, что сервер у меня на компе хранится.

Re: Ошибка при создании сокета

Добавлено: 05 май 2013, 22:37
bundos
Проблема решилась. Ошибка была в том, что пытался установить соединение с сокетом андроид девайсе. И участок кода [syntax="Java"]InetAddress inetAddress = InetAddress.getByName(Serv_Addr);
Log.d("CLIENT",inetAddress.toString());
socket=new Socket(inetAddress,PORT);
Log.d("CLIENT",socket.toString());[/Syntax] заменил на [syntax=java] InetSocketAddress inetAddress = new InetSocketAddress("192.168.12.1", 31007);
Log.d("CLIENT",inetAddress.toString());
socket = new Socket(inetAddress.getAddress(), 31007);
Log.d("CLIENT",socket.toString());[/syntax]
Всем спасибо за участие!

Re: Ошибка при создании сокета

Добавлено: 06 май 2013, 12:13
Mikhail_dev
Ну это неполный лог ошибки. Это лишь её начало. Там всегда выбрасывает по 30 строк.