0

(wifi)c#経由で PC 上のアプリケーションと通信するために、Android アプリケーションを実装する必要があります。TCP私はこれに従いました -

https://workspaces.codeproject.com/dhl_hh/android-how-to-communicate-with-net-application-vi

eneterライブラリを使用したソリューションを実装するためのチュートリアル。

C#アプリケーションに使用される IPは

IDuplexInputChannel anInputChannel
            = aMessaging.CreateDuplexInputChannel("tcp://127.0.0.1:8060/"); 

Androidアプリに使用されるIPは

IDuplexOutputChannel anOutputChannel
        = aMessaging.createDuplexOutputChannel("tcp://10.0.2.2:8060/");

しかし、アンドロイドアプリを実機に​​転送しwifiてC#アプリ経由でデータを送信しようとすると、チュートリアルにあるように携帯端末から転送された文字列が表示されません。

私が試した修正は、

  • C#IPをそのまま(127.0.0.1)に保ち、Android IPをC#アプリが実行されているPCのIP(192.168.137.1)に変更しました。
  • 動作する修正: C# IP を PC の実際の IP (192.168.137.1) に変更し、Android アプリの IP アドレスを Android デバイスの実際の IP (192.168.137.1) に変更しました。
  • 参考:ポート番号は変更していません

これらの修正を行っても問題は解決せず、どうすればよいかわかりません。私はtcpプログラミング分野の初心者であるため、数日間多くのソリューションを試していました。

この問題を解決する方法について、専門家のアドバイスをいただければ幸いです。

あなたは大歓迎です:)

前もって感謝します。

PS

  • PC の実際の IP (C# プログラムを使用) -192.168.137.1
  • Android デバイスの実際の IP (Android アプリを使用) -192.168.137.14

Logcat 出力

05-29 12:49:17.988: E/EneterMessaging(1792): ~  1 eneter.messaging.endpoints.typedmessages.DuplexTypedMessageSender.sendRequestMessage DuplexTypedMessageSender<MyResponse, MyRequest> atached to the duplex output channel '' failed to send the request message because it is not attached to any duplex output channel.
05-29 12:49:17.988: E/EneterMessaging(1792): ~  1 net.client.AndroidNetCommunicationClientActivity.onSendRequest Sending the message failed.

05-29 12:49:17.988: E/EneterMessaging(1792): Exception:

05-29 12:49:17.988: E/EneterMessaging(1792): java.lang.IllegalStateException: DuplexTypedMessageSender<MyResponse, MyRequest> atached to the duplex output channel '' failed to send the request message because it is not attached to any duplex output channel.

05-29 12:49:17.988: E/EneterMessaging(1792): eneter.messaging.endpoints.typedmessages.DuplexTypedMessageSender.sendRequestMessage(DuplexTypedMessageSender.java:67)

05-29 12:49:17.988: E/EneterMessaging(1792): net.client.AndroidNetCommunicationClientActivity.onSendRequest(AndroidNetCommunicationClientActivity.java:120)

05-29 12:49:17.988: E/EneterMessaging(1792): net.client.AndroidNetCommunicationClientActivity.access$1(AndroidNetCommunicationClientActivity.java:111)

05-29 12:49:17.988: E/EneterMessaging(1792): net.client.AndroidNetCommunicationClientActivity$2.onClick(AndroidNetCommunicationClientActivity.java:160)

05-29 12:49:17.988: E/EneterMessaging(1792): android.view.View.performClick(View.java:4102)

05-29 12:49:17.988: E/EneterMessaging(1792): android.view.View$PerformClick.run(View.java:17084)

05-29 12:49:17.988: E/EneterMessaging(1792): android.os.Handler.handleCallback(Handler.java:615)

05-29 12:49:17.988: E/EneterMessaging(1792): android.os.Handler.dispatchMessage(Handler.java:92)

05-29 12:49:17.988: E/EneterMessaging(1792): android.os.Looper.loop(Looper.java:155)

05-29 12:49:17.988: E/EneterMessaging(1792): android.app.ActivityThread.main(ActivityThread.java:5520)

05-29 12:49:17.988: E/EneterMessaging(1792): java.lang.reflect.Method.invokeNative(Native Method)

05-29 12:49:17.988: E/EneterMessaging(1792): java.lang.reflect.Method.invoke(Method.java:511)

05-29 12:49:17.988: E/EneterMessaging(1792): com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1029)

05-29 12:49:17.988: E/EneterMessaging(1792): com.android.internal.os.ZygoteInit.main(ZygoteInit.java:796)

05-29 12:49:17.988: E/EneterMessaging(1792): dalvik.system.NativeStart.main(Native Method)

05-29 12:49:17.988: E/EneterMessaging(1792): ==========
4

2 に答える 2

0

その接続を許可するように Windows ファイアウォールを構成するか、オフにする必要があります。

于 2014-05-29T09:01:12.753 に答える