局域网中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真...
  • mmc_maodun
  • mmc_maodun
  • 2013年10月26日 16:49
  • 8556

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

android端基于socket的局域网内服务器与客户端加密通信实现了基本的socket通信(即两台设备,一台用作服务器,一台用作客户端),服务器进行监听,客户端发送加密数据到服务器,服务器进行解密得...
  • baidu_27419681
  • baidu_27419681
  • 2017年04月13日 00:51
  • 672

在android的同一个wifi局域网下,利用socket与多个手机进行数据的收发

前言: 在这里强调局域网,是因为内网之间的设备通信时,无需经过外网,若想内网的设备能够与外网进行通信,可自行百度其解决办法... 虽说利用wifi,实质是怎么利用socket来进行通信的问题 步骤...
  • u010661782
  • u010661782
  • 2016年03月21日 15:14
  • 7813

android中Activity与service之间相互通信的实现方式

使用intent代参,intent可以带基础数据类型,基础数据类型的数组,序列化对象,集合 使用广播 使用单例模式,在activity与service中少用 bindService获取引用,AIDL(...
  • Dr_abandon
  • Dr_abandon
  • 2016年11月10日 19:47
  • 570

【Android归纳】Fragment之间的通信方式对比

第一种方式通过互相设置回调来进行Fragment之间的通信 第二种方式将所有的控制都交给了宿主Activity,通过Activity实现Fragment当中定义的各种接口,然后通过回调的方式来处理Ac...
  • s003603u
  • s003603u
  • 2015年09月21日 15:00
  • 2451

android中不同类之间的数据通信之接口回调

android中不同类之间的数据通信之接口回调 众所周知,在android中不同类之间的数据传递方式有许多,例如使用application共享变量,存放本地数据库,sharepreference,in...
  • razeSpirit
  • razeSpirit
  • 2016年06月29日 16:14
  • 4840

android中进程与进程,线程与线程之间如何通信??

原文地址:Android中的进程与线程    原文作者:江鹏 android中进程与进程,线程与线程之间如何通信?? 1.一个android程序开始运行时,会单独启动一个process 默认情况...
  • zxcvzxcv7
  • zxcvzxcv7
  • 2012年04月08日 11:35
  • 2282

局域网计算机间进行通信都经历了什么

上图中连线应该是双向箭头,这里就不在进行修改了 局域网中A和B进行通信,可以直接连接网线。但当局域网中计算机比较多的时候呢?都连接网线吗?显然这种做法不太行。由此交换机就应运而生。 局域网间多个计...
  • baidu_32134295
  • baidu_32134295
  • 2017年04月27日 09:22
  • 720

Android 使用socket 实现简单的客户端和服务器端互相通信

1、服务端:public class SocketServer { public static void main(String[] args) throws IOException { ...
  • lovoo
  • lovoo
  • 2016年06月26日 22:09
  • 4699

android中fragment与activity之间通信原理以及例子

转自   http://www.jcodecraeer.com/a/anzhuokaifa/androidkaifa/2012/1016/441.html 首先,如果你想在andro...
  • guozh
  • guozh
  • 2014年05月08日 17:45
  • 40066
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:局域网中android与android之间的通信
举报原因:
原因补充:

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