AndroidをサーバーとIPおよび対応するポートに接続する最良の方法は何ですか? この接続は常に必要というわけではありませんが、ファイルを (バイト配列またはストリームで) 送受信すると想定しています。
ありがとう
AndroidをサーバーとIPおよび対応するポートに接続する最良の方法は何ですか? この接続は常に必要というわけではありませんが、ファイルを (バイト配列またはストリームで) 送受信すると想定しています。
ありがとう
Android 開発ツールは Java にネイティブであるため、単純な Java Socket API を使用してこの目標を達成できます ( ServerSocketおよびSocketを参照)。
ServerSocket
リッスンするポートを定義して、ホスト コンピューターで を開くことから始める必要があります。
ServerSocket ss = new ServerSocket([some_port]);
次に、 を呼び出して、クライアントのリッスンを開始する必要がありますss.accept()
。このメソッドは、クライアントが接続するまでブロックします:
Socket my_socket = ss.accept();
これで、サーバーにソケットができました。これを好きなように操作できます (おそらく と を使用しますObjectInputStream
) ObjectOutputStream
。
ObjectOutputStream out = new ObjectOutputStream(my_socket.getOutputStream());
ObjectInputStream in= new ObjectInputStream(my_socket.getInputStream());
作成したばかりのサーバーとの接続を確立する必要があります。これを行うには、ソケットを初期化し、サーバーの IP アドレス (ほとんどのテスト目的では通常 localhost) とサーバーが現在リッスンしているポート番号を渡します。
Socket socket = new Socket("localhost", [some_port]);
ここでも、通信用のストリームをいくつか確立します。
ObjectOutputStream out = new ObjectOutputStream(socket.getOutputStream());
ObjectInputStream in = new ObjectInputStream(socket.getInputStream());
そして、あなたはそれを持っています!Android デバイスからサーバーと簡単に通信できるようになりました。思ったよりずっと簡単です。
ただし、このアーキテクチャは TCP を実装することに注意してください。TCP は UDP よりもはるかに低速であり、ペースの速いデータ集約型のゲームでは機能しませんが、上記の説明を考慮して目標を達成する必要があります。