使用 .NET 和 Xamarin 的服务器客户端应用程序

Server Client Application with .NET and Xamarin

我在互联网上搜索了很多小时,但找不到符合我情况的任何内容。

我只想使用 TCP 或 UDP 实现一个 Server/Client 应用程序,其中我的 Android 应用程序 (Xamarin) 充当服务器,我的 .NET 应用程序充当客户端。由于我没有太多应用程序开发经验,也没有 Xamarin 经验,所以我一直在寻找示例。我只找到了这个:

http://www.codeproject.com/Articles/340714/Android-How-to-communicate-with-NET-application-vi

首先,这是相反的方式(.NET 上的服务器和作为 App 的客户端),另外它适用于 Android Studio,所以我很难将这些东西正确无误地翻译成 Xamarin。

请有人帮忙并举例说明如何解决我的问题?

谢谢!

你可以像在普通 .net 中那样做,除了你必须请求权限才能使用套接字。

在 C# 中有大量创建侦听 tcp 连接的简单示例。

您将遇到的问题是知道您的服务器的 IP 地址(在 phone 中),因为它可能会在用户移动时经常更改。

Xamarin.Android 上,您可以使用所有常规 .Net 套接字 classes:

命名空间:

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 所需权限为:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

基于 MSDN 的 Asynchronous Server Socket 示例作为 cut/paste 示例使用,没有任何变化。

使用MSDN代码,可以在线程中调用静态方法AsynchronousSocketListener.StartListening,开始监听AsynchronousSocketListenerclass.[=22=中定义的端口11000 ]

new Thread (new ThreadStart (delegate {
    AsynchronousSocketListener.StartListening();
})).Start ();

一旦它在您的 device/emulator 上 运行,您可以远程登录到您的 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<EOF>,Android 将回显:

This is a test<EOF>