我在互联网上搜索了很多时间,但我找不到与我的情况相符的任何内容。
我只是想用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而没有错误。
请有人帮忙,并举例说明如何实现我的问题?
谢谢!
答案 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);
<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 ();
>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地址(在手机中),因为它可能会在用户移动时经常更改。