2

こんにちは、localhost で自分のコンピューターと Android アプリケーション (現時点ではエミュレーター) との間で単純なソケット接続を試みています。私のコンピューターはサーバーとして機能し、Android アプリケーションはクライアントです。奇妙な理由で、接続を取得できません。これを行うために多くの方法を試しましたが、うまくいきません。エラー/例外が発生しないため、プロジェクトをさらに進める方法が本当にわかりません。

サーバー コード (デスクトップ プログラム):

                serverSocket = new ServerSocket(6789);
    while (true) {
        try {
            messageArea.append("\nNow acts as server and waits for mobile to connect.");
            Socket socket = serverSocket.accept(); //blocking state
            messageArea.append("\nMOBILE DEVICE CONNECTED.");
            messageArea.append("\nconnection accepted by:\t :IP" + socket.getInetAddress() + "\t Port:" + socket.getPort() + "\t LocalPort:" + socket.getLocalAddress());

            try {
                createNewStreamsAndListening(socket);
            } catch (ParseException ex) {
                Logger.getLogger(Desktop.class.getName()).log(Level.SEVERE, null, ex);
            }
        } catch (SocketException e) {
        }
    }

サーバー コードが問題になることはありません。

クライアント (Android アプリケーション):

-MainActivity.java

public class MainActivity extends Activity
{

private Socket clientSocket = null;
private PrintWriter out;
private BufferedReader in;
boolean run = false;

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
}

public void onClick(View view) {
        connect();
        createStreamsAndListening();
}

public void connect(){
    try {
        clientSocket = new Socket("127.0.0.1", 6789);
    } catch (UnknownHostException ex) {
        Logger.getLogger(MainActivity.class.getName()).log(Level.SEVERE, null, ex);
    } catch (IOException ex) {
        Logger.getLogger(MainActivity.class.getName()).log(Level.SEVERE, null, ex);
    } 

    if (clientSocket != null) {
        run = true;
    }
}

public void createStreamsAndListening(){
    Thread t = new Thread(
            new Runnable() {
                @Override
                public void run(){;
                    try {
                        out = new PrintWriter(clientSocket.getOutputStream());
                        in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
                    } catch (IOException ex) {
                        System.err.println("Error in creating Streams:" + ex.toString());
                        return;
                    }

                    String msg = "";

                    while (run) {
                        out.println("Message from client");
                        out.flush();
                        /*try {
                            msg = in.readLine();
                        } catch (IOException ex) {
                            Logger.getLogger(MainActivity.class.getName()).log(Level.SEVERE, null, ex);
                        }*/
                    }
                }
            });
    t.start();
}

}

-main.xml

    <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Hello World, MainActivity"
    />

    <Button
        android:id="@+id/myButton"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClick"
        android:text="Connect" >
    </Button>

</LinearLayout>

-AndroidManifest.xml

    <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.connect"
      android:versionCode="1"
      android:versionName="1.0">

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

    <application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
        <activity android:name="MainActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

クライアントはサーバーにまったく接続しません。どんな種類の助けにも感謝します!

4

1 に答える 1