Androidプログラミングは、ローカルネットワークudpラジオに基づいて、自動的にsocket接続を確立する方法を実現します。
この例は、Androidプログラミングが、ローカルネットワークudpブロードキャストに基づいて自動的にsocket接続を確立する方法を説明する。皆さんに参考にしてあげます。具体的には以下の通りです。
Android開発には常にsocket通信が使われています。プロジェクトのために、最近この方面の知識を研究しました。需要はwifiを通じてAndroidモバイルデバイスとandroidプラットフォームのテレビ間のファイル転送とコントロールを実現したいです。間違いなくこの中では必ずsocketで通信する必要があります。今日は2台の設備の握手接続方式について共有しましょう。この方法は本人の個人的な考えの実現だけです。参考にしてください。
socketを使って通信するには、サーバーのIPアドレスを知らなければなりません。私が使っているのはup局のネットワーク放送を通じて、局のネットワークのサービス先の検索と接続を実現するためです。コードの実装は以下の通りです。
まずクライアント:
ここで述べたように、皆さんのAndroidプログラムの設計に役に立ちます。
Android開発には常にsocket通信が使われています。プロジェクトのために、最近この方面の知識を研究しました。需要はwifiを通じてAndroidモバイルデバイスとandroidプラットフォームのテレビ間のファイル転送とコントロールを実現したいです。間違いなくこの中では必ずsocketで通信する必要があります。今日は2台の設備の握手接続方式について共有しましょう。この方法は本人の個人的な考えの実現だけです。参考にしてください。
socketを使って通信するには、サーバーのIPアドレスを知らなければなりません。私が使っているのはup局のネットワーク放送を通じて、局のネットワークのサービス先の検索と接続を実現するためです。コードの実装は以下の通りです。
まずクライアント:
public class MainActivity extends Activity {
/* socket*/
private MulticastSocket ms;
/* */
private Button sendUDPBrocast;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
init();
}
/* */
public void init() {
setContentView(R.layout.main);
sendUDPBrocast = (Button) findViewById(R.id.send);
sendUDPBrocast.setOnClickListener(new SendUDPBrocastListener());
try {
/* socket */
ms = new MulticastSocket();
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* ,
* */
class SendUDPBrocastListener implements OnClickListener{
@Override
public void onClick(View v) {
// ,
DatagramPacket dataPacket = null;
try {
ms.setTimeToLive(4);
// IP( IP) , server IP
byte[] data = "192.168.1.101".getBytes();
//224.0.0.1
InetAddress address = InetAddress.getByName("224.0.0.1");
//
System.out.println(address.isMulticastAddress());
dataPacket = new DatagramPacket(data, data.length, address,
8003);
ms.send(dataPacket);
ms.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
以下はサービスです。
public class MainActivity extends Activity implements Runnable {
private MulticastSocket ds;
String multicastHost="224.0.0.1";
InetAddress receiveAddress;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
try {
ds = new MulticastSocket(8003);
receiveAddress=InetAddress.getByName(multicastHost);
ds.joinGroup(receiveAddress);
new Thread(this).start();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
@Override
public void run() {
// TODO Auto-generated method stub
byte buf[] = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, 1024);
while (true) {
try {
ds.receive(dp);
//Toast.makeText(this, new String(buf, 0, dp.getLength()), Toast.LENGTH_LONG);
System.out.println("client ip : "+new String(buf, 0, dp.getLength()));
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
このようにモバイルデバイスに接続された局網内にsocketのサービスがあると、クライアントからのブロードキャストがサービス側に受信され、受信されたIPを介してクライアントと接続し、制御およびファイルの転送が可能になる。Dup放送は、局のネットワーク伝送速度が遅くなります。また、Dupは信頼できないプロトコルですので、必ずしも受信できるとは限りません。したがって、実際には多くの論理処理が必要です。例えば、スレッド内で放送すると、サーバーからの応答が受信されますが、局網内にサーバーが存在しないと死のサイクルに陥ることがあります。だからこの時は時間制限操作などをします。具体的に個人のニーズを見て話しましょう。ここで述べたように、皆さんのAndroidプログラムの設計に役に立ちます。