使用.NET和Xamarin的服务器客户端应用程序
我在互联网上搜索了很多个小时但我发现任何与我的情况相符的东西。
我只是想用TCP或UDP实现一个服务器/客户端应用程序,其中我的Android App(Xamarin)充当服务器,我的.NET应用程序充当客户端。 由于我没有太多的应用程序开发经验和没有Xamarin的经验,我一直在寻找一个例子。 我发现的只有:
http://www.codeproject.com/Articles/340714/Android-How-to-communicate-with-NET-application-vi
首先,这是相反的方式(服务器在.NET和客户端作为应用程序),另外它是用于Android Studio所以我很难将这些东西翻译成Xamarin而没有错误。
请有人帮忙,并举例说明如何实现我的问题?
谢谢!
在Xamarin.Android
您可以使用所有常规.Net套接字类:
命名空间:
using System.Net; using System.Net.Sockets;
例:
IPHostEntry ipHostInfo = Dns.GetHostEntry (Dns.GetHostName ()); IPAddress ipAddress = ipHostInfo.AddressList [0]; IPEndPoint localEndPoint = new IPEndPoint (ipAddress, 11000); System.Diagnostics.Debug.WriteLine(ipAddress.ToString()); // Create a TCP/IP socket. Socket listener = new Socket (AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
AndroidManifest.xml必需的权限是:
基于MSDN的异步服务器套接字示例用作剪切/粘贴示例,没有任何更改。
即
使用MSDN代码,可以在线程中调用静态方法AsynchronousSocketListener.StartListening
,以开始侦听AsynchronousSocketListener
类中定义的端口11000。
new Thread (new ThreadStart (delegate { AsynchronousSocketListener.StartListening(); })).Start ();
一旦它在您的设备/模拟器上运行,您就可以远程登录到您的Android TCP套接字服务器:
>telnet 10.71.34.100 11000
Trying 10.71.34.100... Connected to 10.71.34.100. Escape character is '^]'.
连接后,输入This is a test
,Android会回复它:
This is a test
你可以像普通的.net一样执行此操作,除非你必须要求权限才能使用套接字。
在c#中创建一个监听tcp连接有很多简单的例子。
您将遇到的问题是知道服务器的IP地址(在手机中),因为它可能会在用户移动时经常更改。