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

10

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

我想要实现一个使用TCP或UDP协议的服务器/客户端应用程序,其中我的Android应用程序(Xamarin)作为服务器,我的.NET应用程序作为客户端。由于我没有太多的应用程序开发经验,也没有使用Xamarin的经验,因此我正在寻找一个示例。我所找到的只有这个:

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

首先,这是反过来的方式(.NET上的服务器和应用程序上的客户端),此外,它还是针对Android Studio的,因此对我来说很难将这些内容翻译成Xamarin而不出错。

请问有人能帮忙并给我一个如何实现我的问题的示例吗?

谢谢!


{btsdaf} - Umair M
2个回答

10

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 的 异步服务器套接字 示例可以直接复制黏贴使用。

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

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

一旦它在您的设备/模拟器上运行,您就可以telnet到您的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>

太好了!谢谢你! - Canox
我使用异步服务器套接字示例实现了一个Xamarin应用程序,并在我的Android模拟器上运行,但我无法通过telnet连接它,出现错误“无法打开到主机的连接...”。您有什么想法,为什么我无法连接? - slaphshot33324
@slaphshot33324 你是否在使用模拟器的虚拟网络接口中正确的IP地址? - SushiHangover
@SushiHangover 我不确定,我该如何找到那个IP地址? - slaphshot33324
@slaphshot33324 你可以使用ipconfig/ifconfig(取决于平台),这只是众多方法之一。 - SushiHangover
显示剩余6条评论

3
你要像在普通的 .net 中一样做,只是你必须请求使用套接字的权限。
有大量简单的示例可以在 c# 中创建监听 tcp 连接。
你将遇到的问题是要知道服务器的 IP 地址(在手机中),因为当用户移动时,它很可能经常变化。

没问题,因为我只需要在手机直接靠近电脑时使用它。谢谢! - Canox

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接