Клиентский сервер Android - PullRequest
0 голосов
/ 30 декабря 2011

Я провел много исследований по этому вопросу и попробовал каждый метод там, чтобы заставить его работать.У меня есть сервер 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");
    }
}
}

1 Ответ

1 голос
/ 05 января 2012

Проблема была не в коде, проблема была в манифесте. Мне пришлось добавить эту строку в манифест, чтобы предоставить приложению разрешение на открытие сетевых сокетов.

<uses-permission android:name="android.permission.INTERNET" /> 

Надеюсь, это кому-нибудь поможет! :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...