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

时间:2016-04-24 12:57:47

标签: c# .net xamarin server client

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

我只是想用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而没有错误。

请有人帮忙,并举例说明如何实现我的问题?

谢谢!

2 个答案:

答案 0 :(得分:8)

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必需的权限是:

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

基于MSDN的Asynchronous Server Socket示例用作剪切/粘贴示例,没有任何更改。

使用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<EOF>,Android就会回复它:

This is a test<EOF>

答案 1 :(得分:2)

你这样做就像普通的.net一样,除了你必须要求权限使用套接字。

在c#中有很多简单的创建侦听tcp连接的例子。

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