【问题标题】:Server Client Application with .NET and Xamarin带有 .NET 和 Xamarin 的服务器客户端应用程序
【发布时间】:2016-08-17 19:56:08
【问题描述】:

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

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

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

首先这是相反的方式(.NET 上的服务器和作为应用程序的客户端),另外它适用于 Android Studio,因此我很难将这些东西毫无错误地翻译成 Xamarin。

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

谢谢!

【问题讨论】:

  • 我正在尝试做完全相同的事情。你做到了吗?

标签: c# .net xamarin server client


【解决方案1】:

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&lt;EOF&gt;,Android 会回显:

This is a test<EOF>

【讨论】:

  • 太棒了!谢谢你!
  • 我已经使用异步服务器套接字示例实现了一个 Xamarin 应用程序,它正在我的 Android 模拟器上运行,但我无法通过 telnet 连接到它,并出现错误“无法打开与主机的连接...”。关于为什么我无法连接的任何想法?
  • @slaphshot33324 您是否使用了来自模拟器的 v-net 接口的正确 IP 地址?
  • @SushiHangover 我不确定,我如何找到那个 IP 地址?
  • @slaphshot33324 您可以使用 ipconfig/ifconfig(取决于平台),这只是其中一种方式。
【解决方案2】:

您可以像在普通 .net 中一样执行此操作,但您必须请求权限才能使用套接字。

在 C# 中创建侦听 tcp 连接的简单示例很多。

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

【讨论】:

  • 没关系,因为当手机直接靠近我的电脑时我才需要它。谢谢!
猜你喜欢
  • 2011-07-29
  • 2021-10-18
  • 1970-01-01
  • 1970-01-01
  • 2012-12-12
  • 1970-01-01
  • 1970-01-01
  • 2010-12-19
  • 1970-01-01
相关资源
最近更新 更多