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

Can*_*nox 9 .net c# client xamarin server

我在互联网上搜索了很多时间,但是找不到与我的情况相符的任何东西.

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

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

谢谢!

Sus*_*ver 8

在Xamarin.Android您可以使用所有常规.Net套接字类:

命名空间:

using System.Net;
using System.Net.Sockets;
Run Code Online (Sandbox Code Playgroud)

例:

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);
Run Code Online (Sandbox Code Playgroud)

AndroidManifest.xml必需的权限是:

<uses-permission android:name="android.permission.INTERNET"></uses-permission>
Run Code Online (Sandbox Code Playgroud)

基于MSDN的异步服务器套接字示例用作剪切/粘贴示例,没有任何更改.

即

使用MSDN代码,您可以AsynchronousSocketListener.StartListening在线程中调用静态方法,以开始侦听AsynchronousSocketListener类中定义的端口11000 .

new Thread (new ThreadStart (delegate {
    AsynchronousSocketListener.StartListening();
})).Start ();
Run Code Online (Sandbox Code Playgroud)

一旦它在您的设备/模拟器上运行,您就可以远程登录到您的Android TCP套接字服务器:


>telnet 10.71.34.100 11000
Run Code Online (Sandbox Code Playgroud)
Trying 10.71.34.100...
Connected to 10.71.34.100.
Escape character is '^]'.
Run Code Online (Sandbox Code Playgroud)

连接后,输入,This is a test<EOF>Android将回复它:

This is a test<EOF>
Run Code Online (Sandbox Code Playgroud)