1

私のサーバーコード

 public class RemoteServer {

public static void main(String[] args) {


    ServerSocket serverSocket = null;
    Socket socket = null;
    DataInputStream dataInputStream = null;
    DataOutputStream dataOutputStream = null;

    try {
        serverSocket = new ServerSocket(8888);
        System.out.println("Listening :8888");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    while (true) {
        try {
            socket = serverSocket.accept();
            dataInputStream = new DataInputStream(socket.getInputStream());
            dataOutputStream = new DataOutputStream(
                    socket.getOutputStream());
            System.out.println("ip: " + socket.getInetAddress());
            System.out.println("message: " + dataInputStream.readUTF().toUpperCase());
            dataOutputStream.writeUTF("sajol");
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } finally {
            if (socket != null) {
                try {
                    socket.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

            if (dataInputStream != null) {
                try {
                    dataInputStream.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }

            if (dataOutputStream != null) {
                try {
                    dataOutputStream.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
            }
        }
    }
}
     }

Android デバイスのクライアント コード

public class Client extends Activity {

EditText textOut;
TextView textIn; 

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

    textOut = (EditText) findViewById(R.id.t);
    Button buttonSend = (Button) findViewById(R.id.b);
    textIn = (TextView) findViewById(R.id.te);
    buttonSend.setOnClickListener(buttonSendOnClickListener);
}

Button.OnClickListener buttonSendOnClickListener = new Button.OnClickListener() {

    @Override 
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
    Thread t = new Thread(r);
    t.start();
    }
};
Runnable r = new Runnable() {

    @Override
    public void run() {
        // TODO Auto-generated method stub

        Socket socket = null;
        DataOutputStream dataOutputStream = null;
        DataInputStream dataInputStream = null;

        try {
            socket = new Socket("192.168.1.239", 8888);
            dataOutputStream = new DataOutputStream(
                    socket.getOutputStream());
            dataInputStream = new DataInputStream(socket.getInputStream());
            dataOutputStream.writeUTF(textOut.getText().toString());
            textIn.setText(dataInputStream.readUTF());
        } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            Log.e("Sajol", e+"");
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            Log.e("Sajol", e+"");
            e.printStackTrace();
        } finally {
            if (socket != null) {
                try {
                    socket.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    Log.e("Sajol", e+"");
                }
            }

            if (dataOutputStream != null) {
                try {
                    dataOutputStream.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    Log.e("Sajol", e+"");
                }
            }

            if (dataInputStream != null) {
                try {
                    dataInputStream.close();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                    Log.e("Sajol", e+"");
                }
            }
        }







    }
};
  }

このクライアント コードをエミュレータ サーバーで実行すると応答します。しかし、実際のデバイス サーバー プログラムでクライアント コードを実行すると、応答しません。cmd で ipconfig コマンドを実行して、コードで使用している IP アドレスを見つけました。私のPC(Windows 7)とAndroidデバイスの両方がwifiに接続されています。

私は次の例外を得ました

java.net.SocketTimeoutException: 接続がタイムアウトしました

解決策を教えてください

4

0 に答える 0