0

私はこれらの質問のいくつかを見てきましたが、答えのどれも私の問題を解決していないようです。クライアント(Androidフォン、実際には物理デバイスを持っています)からサーバー(PC)にメッセージを表示したい。私は非常にシンプルなPCサーバーを持っています:

public void run(int port) throws Exception
{
    ServerSocket ss = new ServerSocket(port);
    Socket sock = ss.accept();

    BufferedReader reader = new BufferedReader(new InputStreamReader(sock.getInputStream()));

    System.out.println(reader.readLine());
}

(私の主な空白で):

Server s = new Server();
s.run(4444);

そして、非常にシンプルなAndroidクライアント:

package com.j03.client;

import android.app.*;
import android.os.*;
import android.view.*;
import android.widget.*;
import java.io.*;
import java.net.*;

public class MainActivity extends Activity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        try
        {
            runClient("10.0.2.2", 4444, "hey");
        }
        catch (Exception e)
        {
            TextView t = new TextView(this);
            t.setText(e.getMessage());
            setContentView(t);
        }
    }

    public static void runClient(String ip, int port, String message) throws Exception
    {
        Socket sock = new Socket(ip, port);
        PrintStream ps = new PrintStream(sock.getOutputStream());
        ps.println(message);
    }
}

マニフェストファイルにも適切なインターネット権限があります。

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

また、クライアントコードはPCクライアントとして正常に機能します。(PCクライアントからPCサーバーへの接続は正常に機能します)。

しかし、Androidで動作させることはできません!

PCサーバーは単に何も表示しません。:(

誰かが私が間違っている可能性があることを知っていますか?

4

1 に答える 1

0

また、これはすべてUIスレッドで行っている可能性があります。これを実行してアプリケーションが応答しないダイアログを表示すると、Androidがアプリを強制終了することがあると思います。

他のポスターも、例外が発生するまでアクティビティが空であることについて正しいです。私はそれを修正し、runClientを含む別のスレッドを開始してみます

于 2013-03-08T22:36:55.250 に答える