局域网中android与android之间的通信

转载 2015年11月20日 16:32:34

客户端:

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();  
            }  
        }  
    }  
}  

相关文章推荐

详细分析局域网内通过无线实现Android端与PC端TCP/UDP通信的四种情况

Android端与PC端在局域网(可以将两者放在同一个无线路由器下,wifi连接)内通过无线实现通信要分几种具体的情况分析,这里以TCP协议的Socket通信为例来具体说明: 1、Android真...

android Http通信局域网测试详解

以前一直用别人的服务器感觉特别别扭,而且一直受制于人。有句话怎么说“自己动手丰衣足食”,最近对Node.js,express框架以及javascript服务器搭建有些许研究,通过两天的研究终于搭建起自...

Android中Activity之间通信

  • 2014-10-10 19:38
  • 50KB
  • 下载

android端基于socket的局域网内服务器与客户端加密通信

android端基于socket的局域网内服务器与客户端加密通信实现了基本的socket通信(即两台设备,一台用作服务器,一台用作客户端),服务器进行监听,客户端发送加密数据到服务器,服务器进行解密得...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)