本文介绍了MulticastSocket多的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想问的MulticastSocket上采用的是Android 2.3的支持?

我的Java服务器上的一个模块。此服务器将发送uninterprupted信息。我有一个模块的Andr​​oid客户端(模拟器的虚拟设备)。我将首先启动Android客户端为它等待接收服务器的信息,然后我会开始Java服务器发送信息。最后,我想我的仿真器可以接收来自Java服务器信息。 PS:我会成功,如果2个模块是所有Java

这是我的服务器模块(很简单)结果

公共类服务器{结果   公共服务器()抛出IOException异常,InterruptedException的{结果      DatagramSocket的插座=新的DatagramSocket();结果      字节[] B =新的字节[1024];结果      DatagramPacket类DGRAM =新的DatagramPacket(B,b.length个,InetAddress.getByName结果
(239.0.0.1),5000);
      通信System.err.println(发送+ b.length个+字节+ dgram.getAddress()+:+搜索
dgram.getPort());
      而(真){结果         System.err.print(。);结果         socket.send(DGRAM);结果         视频下载(1000);结果      }结果   }结果}结果

这是我的Andr​​oid模拟器(也很简单)结果

公共类ClientForm扩展活动{结果
   私人的EditText edcontentview;结果
   @Override结果
   公共无效的onCreate(捆绑savedInstanceState){结果
      super.onCreate(savedInstanceState);结果
      的setContentView(R.layout.clientform);结果
      edcontentview =(EditText上)findViewById(R.id.edtcontentview);结果
      MulticastLock _wifiMulticastLock = ((WifiManager)this.getSystemService(Activity.WIFI_SERVICE)).createMulticastLock(\"_wifiMulticastLock\");

        _wifiMulticastLock.setReferenceCounted(真);结果
        _wifiMulticastLock.acquire();结果
      新主题(新的Runnable接口(){结果
         @Override结果
         公共无效的run(){结果
            字节[] B =新的字节[1024]结果
            最后DatagramPacket类DGRAM =新的DatagramPacket(B,b.length个);结果
            MulticastSocket多插座= NULL;结果
            尝试{结果
               插座=新的MulticastSocket(5000);结果
               socket.joinGroup(InetAddress.getByName(239.0.0.1));结果
            }赶上(IOException异常五){结果
               e.printStackTrace();结果
            }结果
            而(真){结果
               尝试{结果
                  socket.receive(DGRAM);结果
                  视频下载(1000);结果
               }赶上(IOException异常五){结果
                  e.printStackTrace();结果
               }赶上(InterruptedException的E){结果
                  e.printStackTrace();结果
               }结果
               新的处理程序()。后(新的Runnable(){结果
             @Override结果
                  公共无效的run(){结果
                     结果; edcontentview.append(从字节+ dgram.getAddress()获得+ dgram.getLength()+)
                  }结果
               });结果,
               dgram.setLength(b.length个);结果
            }结果
         }结果
      })开始();结果
   }结果
}结果


解决方案

Yes.Isnt的的你要找的东西?

I would like to ask that MulticastSocket is supported in android 2.3?

I have a module on Java Server. This server will send information uninterprupted. And I have a module Android Client (on emulator virtual device). I will start android client first for it to wait to receive server's information Then I will start Java server to send information. Finally I wanna my emulator can receive info from java server. PS: I will be successful if 2 modules are all java.

This is my server module (very simple)

public class Server {
public Server() throws IOException, InterruptedException{
DatagramSocket socket = new DatagramSocket();
byte[] b = new byte[1024];
DatagramPacket dgram = new DatagramPacket(b, b.length,InetAddress.getByName
("239.0.0.1"), 5000); System.err.println("Sending "+b.length+" bytes to "+dgram.getAddress()+':'+
dgram.getPort()); while(true) {
System.err.print(".");
socket.send(dgram);
Thread.sleep(1000);
}
}
}

This is my android emulator (also very simple)

public class ClientForm extends Activity {
private EditText edcontentview;
@Override
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.clientform);
edcontentview = (EditText)findViewById(R.id.edtcontentview);
MulticastLock _wifiMulticastLock = ((WifiManager)this.getSystemService(Activity.WIFI_SERVICE)).createMulticastLock("_wifiMulticastLock");
_wifiMulticastLock.setReferenceCounted(true);
_wifiMulticastLock.acquire();
new Thread(new Runnable(){
@Override
public void run() {
byte[] b = new byte[1024];
final DatagramPacket dgram = new DatagramPacket(b, b.length);
MulticastSocket socket = null;
try {
socket = new MulticastSocket(5000);
socket.joinGroup(InetAddress.getByName("239.0.0.1"));
} catch (IOException e) {
e.printStackTrace();
}
while(true) {
try {
socket.receive(dgram);
Thread.sleep(1000);
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
new Handler().post(new Runnable() {
@Override
public void run() {
edcontentview.append("Received " + dgram.getLength() + " bytes from " + dgram.getAddress());
}
});
dgram.setLength(b.length);
}
}
}).start();
}
}
解决方案

Yes.Isnt this what you were looking for ?

这篇关于MulticastSocket多的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-19 07:32