android socket通信建立
这里理所当然就想到socket通信。而要建立连接实现要知道接收端的IP地址,参考网咯最终实现;以下是发送端和接收端的实现代码。
接收端:
protected static final int SendPort = 8600; protected static final int ReceivePort = 8601; private MulticastSocket socket; private InetAddress address; private DatagramPacket packet; socket = new MulticastSocket(ReceivePort); address = InetAddress.getByName("224.0.0.1"); socket.joinGroup(address); private Runnable mSendRunnable = new Runnable() { public void run() { //发送数据包,寻找接收端 byte[] buf = "SMART IR".getBytes(); packet = new DatagramPacket(buf, buf.length, address, SendPort); try { socket.send(packet); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } };
接收端:
public class IRReceiveSetupConnectSocket { protected static final String TAG = "MultiSocketA"; protected static final int SendPort = 8601; protected static final int ReceivePort = 8600; private MulticastSocket socket; private InetAddress address; private boolean mReceiveMultiSocket = true; private int ipaddr; public IRReceiveSetupConnectSocket(int ip) throws IOException{ ipaddr = ip; socket = new MulticastSocket(ReceivePort); address = InetAddress.getByName("224.0.0.1"); socket.joinGroup(address); new Thread(run).start(); } // 此thread会一直poll multisovket的信息,只要有接受到信息,就将自己ip地址广播出去;发送端可以以此地址发送key(其它线程的socket) Runnable run = new Runnable() { @Override public void run() { while(mReceiveMultiSocket) { byte[] rev = new byte[128]; DatagramPacket packet = new DatagramPacket(rev, rev.length); try { Log.d("yanxi", "MultiSocket Waitting......."); //receive connect requst,and send ipaddr to request host socket.receive(packet); Log.d("yanxi", "MultiSocket received........"+ new String(packet.getData()).trim()); //send ipaddr to request host byte[] buf = (""+ipaddr).getBytes(); packet = new DatagramPacket(buf, buf.length, address, SendPort); socket.send(packet); Log.d("yanxi", "MultiSocket send........"+ ipaddr); //mReceiveMultiSocket = false; try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } catch (IOException e) { e.printStackTrace(); } } } }; }
通过以上实现发送端就能得到接收端的IP,从而为后面的发送IR Code做基础
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。