【问题标题】:Xamarin.Android communicate with Console app (Websockets)Xamarin.Android 与控制台应用程序 (Websockets) 通信
【发布时间】:2018-07-31 22:33:54
【问题描述】:

我有这个控制台应用程序 websocket 服务器:

Console.WriteLine("[SERVER]");

TcpListener server = new TcpListener(IPAddress.Parse("127.0.0.1"), 80);
server.Start();
Console.WriteLine("Server has started on {0}.{1}Waiting for a connection...", server.LocalEndpoint, Environment.NewLine);

TcpClient client = server.AcceptTcpClient(); //wait for client to connect
Console.WriteLine("A client connected.");

NetworkStream stream = client.GetStream(); //communication channel with client

如何在 Xamarin.Android 应用中连接到控制台应用服务器?

我已经尝试过了(在 xamarin android 应用程序中,按钮的单击事件): 但我从 'client.Connect("127.0.0.1", 80);' 得到一个例外;

异常 = System.Net.Sockets.SocketException:连接被拒绝

requestSpeak.Click += (o, e) =>
{
TcpClient client = new TcpClient();
client.Connect("127.0.0.1", 80); //connect to sv
NetworkStream stream = client.GetStream(); //communication channel with server
};

【问题讨论】:

  • 你必须使用内部IP,而不是环回
  • @SushiHangover 它没有建立连接,最终只是超时(System.Net.Sockets.SocketException:
  • @Jaxi 我尝试了我的本地内部 ip,192.168.x.x。我的代码适用于两个控制台应用程序,但不适用于 xamarin android 应用程序和控制台应用程序。
  • 您是通过模拟器还是实际设备运行您的 xamarin 程序?它是 android、UWP 还是 iOS?

标签: c# xamarin websocket xamarin.forms xamarin.android


【解决方案1】:

无论您使用的是模拟器还是硬件设备,移动应用都会被有效地视为网络上的外部设备。有很多方法可以做到这一点,但对于开发,我更喜欢下载Fiddler 并按照this document 中的描述设置反向代理。所以在打开“允许远程计算机连接”后,我在OnBeforeRequest函数的第一行添加了这样一条规则:

if (oSession.host.toLowerCase() == "192.168.0.5:8888") oSession.host = "127.0.0.1:80";

...其中 192.168.0.5 是运行控制台应用程序的机器的 IP 地址。如果你设置正确,那么你应该也可以从手机浏览器中访问 192.168.0.5:8888。

就像我说的,还有其他方法可以做到这一点,但我发现这个方法效果很好,因为您可以将规则更改为直接指向 localhost:someport,这是 MVC 应用程序默认用于本地调试的方法;在 VS 模拟器中运行 Xamarin 应用程序(比如),这意味着您可以在同一个项目中调试移动应用程序和服务器代码。通过 Fiddler 重定向所有流量,您可以查看移动应用和服务器之间传输的每个数据包,完全支持 JSON、图像以及压缩和 SSL 内容。

【讨论】:

  • 也可以只使用计算机主机名:)
  • 感谢您的回答,但我一直在寻找没有任何工具/程序的解决方案,据我了解,这仅用于调试,不会用于发布,所以让我遇到同样的问题? :D
猜你喜欢
  • 2022-07-07
  • 2011-01-10
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
  • 2015-05-15
  • 1970-01-01
  • 2018-11-25
  • 2014-01-24
相关资源
最近更新 更多