Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Android与控制台应用程序(Websockets)通信_C#_Xamarin_Websocket_Xamarin.forms_Xamarin.android - Fatal编程技术网

C# Android与控制台应用程序(Websockets)通信

C# Android与控制台应用程序(Websockets)通信,c#,xamarin,websocket,xamarin.forms,xamarin.android,C#,Xamarin,Websocket,Xamarin.forms,Xamarin.android,我有一个控制台应用程序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, Envir

我有一个控制台应用程序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
};

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

if(oSession.host.toLowerCase()=“192.168.0.5:8888”)oSession.host=“127.0.0.1:80”

…其中192.168.0.5是运行console应用程序的计算机的IP地址。如果设置正确,那么您也应该能够从手机浏览器中点击192.168.0.5:8888


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

您必须使用内部IP,而不是环回使用10.0.2.2@SushiHangover。它不会建立连接,最终只是超时(System.Net.Sockets.SocketException:)@Jaxi我尝试了我的本地内部ip,192.168.x.x。我的代码适用于两个控制台应用程序,但不适用于xamarin android应用程序和控制台应用程序。您是否通过模拟器或实际设备运行xamarin程序?它是android、UWP还是iOS?也可以始终使用计算机主机名:)感谢您的回答,但我一直在寻找一个没有任何工具/程序的解决方案,据我所知,这只是用于调试,不会用于发布,因此给我留下了相同的问题?:D