Клиентское приложение сервера with.NET и Xamarin

Я искал вокруг в интернете много часов, но я не мог найти ничего, что соответствует моему случаю.

Я просто хочу реализовать серверное / клиентское приложение с TCP или UDP, где мое приложение Android (Xamarin) действует как сервер, а мое приложение .NET-как клиент. Поскольку у меня нет большого опыта разработки приложений и опыта работы с Xamarin, я искал пример. Все, что я нашел это:

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

во-первых, это противоположный способ (сервер на .NET и клиент как приложение) и, кроме того, это для Android Studio, поэтому мне трудно перевести эти вещи в Xamarin без ошибок.

пожалуйста, кто-нибудь может помочь и дать мне пример, как реализовать мою проблему?

спасибо!

2 ответов


On 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, в потоке, чтобы начать слушать на порту 11000, определенном в AsynchronousSocketListener класса.

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

после того, как он работает на вашем устройстве/эмуляторе, вы можете telnet в ваш Android TCP socket server:


>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>

вы делаете это как в обычном .net, за исключением того, что вам нужно спросить разрешения на использование сокетов.

существует множество простых примеров создания прослушивающего tcp-соединения в C#.

проблема, которую вы будете иметь, это знать IP-адрес вашего сервера (в телефоне), поскольку он, вероятно, будет часто меняться, когда пользователь перемещается.