Android编程实现基于局域网udp广播自动建立socket连接的方法

2019-12-10 19:55:17王振洲

易采站长站为您分析Android编程实现基于局域网udp广播自动建立socket连接的方法,涉及Android使用udp广播实现socket通讯的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了Android编程实现基于局域网udp广播自动建立socket连接的方法。,具体如下:

android开发中经常会用到socket通讯。由于项目需要,最近研究了一下这方面的知识。 需求是想通过wifi实现android移动设备和android平台的电视之间的文件传输与控制。 毫无疑问这中间一定需要用到socket来进行通信。今天就两台设备的握手连接方式分享一下吧,该方法只是本人个人想法的实现,仅供参考,如有雷同,不胜荣幸。

要想使用socket进行通讯,就必须知道服务端的IP地址,我使用的是通过udp局网广播来实现局网内服务端的搜寻建立连接。以下是代码实现。

首先是客户端:

 

 
  1. public class MainActivity extends Activity {   /*发送广播端的socket*/  
  2. private MulticastSocket ms;   /*发送广播的按钮*/  
  3. private Button sendUDPBrocast;   @Override  
  4. public void onCreate(Bundle savedInstanceState) {   super.onCreate(savedInstanceState);  
  5. init();   }  
  6. /*初始化参数*/   public void init() {  
  7. setContentView(R.layout.main);   sendUDPBrocast = (Button) findViewById(R.id.send);  
  8. sendUDPBrocast.setOnClickListener(new SendUDPBrocastListener());   try {  
  9. /*创建socket实例*/   ms = new MulticastSocket();  
  10. } catch (Exception e) {   e.printStackTrace();  
  11. }   }  
  12. /**   * 单击按钮时,发送局域网广播  
  13. * */  class SendUDPBrocastListener implements OnClickListener{  
  14. @Override  public void onClick(View v) {  
  15. //发送的数据包,局网内的所有地址都可以收到该数据包   DatagramPacket dataPacket = null;  
  16. try {   ms.setTimeToLive(4);  
  17. //将本机的IP(这里可以写动态获取的IP)地址放到数据包里,其实server端接收到数据包后也能获取到发包方的IP的   byte[] data = "192.168.1.101".getBytes();