我需要实现一个android应用程序以通过(wifi)与c#
PC上的应用程序进行通信。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/");
但是,当我将 android 应用程序传输到实际设备并尝试通过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
。
我非常感谢您提供有关如何解决此问题的专家建议。
非常感谢您的帮助:)
提前致谢。
附言
- PC的实际IP(使用C#程序)-
192.168.137.1
- android设备的实际IP(使用android应用程序)-
192.168.137.14
日志输出
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): ==========