Я провел много исследований по этому вопросу и попробовал каждый метод там, чтобы заставить его работать.У меня есть сервер C #, который принимает сообщение на сокете 192.168.0.101:18250.У меня есть следующий код (ниже), и это основная активность приложения.То, как я это закодировал, заключается в том, что все в методе onCreate, поэтому сокет должен подключаться, как только приложение запускается, но на моем сервере я не вижу его подключения.Сервер безупречен, и я предполагаю, что с ним нет проблем.Я также попробовал приложение из маркета, чтобы посмотреть, сможет ли мой телефон даже подключиться к серверу, и из этого приложения он нормально общался через сокет.Это код, который я собрал за несколько минут, чтобы проверить соединение с сокетом, но независимо от того, что я пробую, сокет просто не соединится.И ни одно из исключений тоже не выбрасывается!
import java.io.*;
import java.net.*;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.widget.*;
public class ClientServerTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
InetAddress addr = InetAddress.getByName("192.168.0.101");
int port = 18250;
// This constructor will block until the connection succeeds
Socket socket = new Socket(addr, port);
socket.getOutputStream();
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));
wr.write("Hello World");
wr.flush();
} catch (UnknownHostException e) {
TextView t=(TextView)findViewById(R.id.textView1);
t.setText(t.getText() + e.getMessage() + "\r\n");
} catch (IOException e) {
TextView t=(TextView)findViewById(R.id.textView1);
t.setText(t.getText() + e.getMessage() + "\r\n");
}
}
}