0

アプリはソケットを使用してコンピューターに接続しますが、コンピューターがイーサネット ケーブルでネットワークに接続されている場合にのみ接続します。ファイアウォールを無効にしてみましたが、違いはありません。

コンピューター上のサーバーのコード:

int port = 7936;        

while(true){
ServerSocket server = new ServerSocket(port);
System.out.println("Waiting for client ...");
Socket client = server.accept();
System.out.println("Client from "+client.getInetAddress()+" connected");

InputStream in = client.getInputStream();

アプリ上のクライアントのコード:

Socket socket = new Socket(address,7936);
OutputStream out = socket.getOutputStream();
String action = "2";
byte[] actByte = action.getBytes();
out.write(actByte);
socket.close();

アドレスはユーザー入力によって定義され、必要な権限はすべてマニフェスト xml ファイルに設定されています。助けてくれてありがとう。

編集

与えられた回答への返信が遅れて申し訳ありません。その後、別のネットワークでプログラムを試すことができましたが、ワイヤレスで接続されたコンピューターで動作するため、問題はコードではなくネットワークにあったようです.

回答してくださった皆様、ありがとうございました。回答に時間がかかって申し訳ありません。

4

2 に答える 2

0

他の人が述べているように、より多くの情報が必要です。コンピューターを有線接続から切断すると、コンピューターがWi-Fiに切り替わり、オンラインであることを確認したと思います。インターフェイスが変更されたためにDHCPを使用している場合、コンピュータは異なるIPアドレスを取得する可能性が高く、MACアドレスも取得しません。

コンピューターのアドレスを確認し、正しいアドレスであることを確認してください。

于 2013-03-21T15:58:56.233 に答える
0

私が考えているのは、ソケットがあなたが考えているIPアドレスにバインドされていないということです。必要な IP アドレス (ネットワーク アダプター) にバインドできるように、 TcpListenerクラスを使用してみてください。

于 2013-03-21T16:31:23.107 に答える