Клиентское приложение сервера 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-адрес вашего сервера (в телефоне), поскольку он, вероятно, будет часто меняться, когда пользователь перемещается.