私はインターネットを何時間も検索しましたが、私の場合に一致するものは見つかりませんでした。
TCPまたはUDPを使用してサーバー/クライアントアプリを実装したいだけです。ここで、私のAndroidアプリ(Xamarin)はサーバーとして機能し、.NETアプリケーションはクライアントとして機能します。私はアプリ開発の経験があまりなく、Xamarinの経験もないので、例を探していました。私が見つけたのはこれだけでした。
http://www.codeproject.com/Articles/340714/Android-How-to-communicate-with-NET-application-vi
まず、これは逆の方法(.NET上のサーバーとアプリとしてのクライアント)であり、さらにAndroid Studio用であるため、これらをエラーなしでXamarinに変換するのは困難です。
誰かが私の問題を実現する方法の例を教えてくれますか?
ありがとうございました!
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ベースの 非同期サーバーソケット の例は、変更なしでカット/ペーストの例として機能します。
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>
これは通常の.netと同じように行いますが、ソケットを使用するためのアクセス許可を要求する必要があります。
C#でリスニングTCP接続を作成する簡単な例はたくさんあります。
あなたが抱える問題は、ユーザーが移動しているときに頻繁に変更される可能性があるため、(電話内の)サーバーのIPアドレスを知ることです。