头都要大了,关于组播不能接收信息的问题,求指点
android开发吧
全部回复
仅看楼主
level 9
莫荩堇 楼主
在电脑端开启线程接收,用手机端发送数据,但是好像电脑发布过来,手机也发不过去。
我的手机是用电脑发射的wifi的。
socket可以连接,发送数据也没问题,就是UDP多播不行
使用IP地址直接发送MulticastSocket也可以收的到
就是组播不行
2013年10月20日 15点10分 1
level 9
莫荩堇 楼主
package com.udp.lan;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.MulticastSocket;
import java.net.UnknownHostException;
/*
* 虚拟IP:224.3.2.2
* 端口8810
* 客户端发送数据
* */
public class UDP_send {
public UDP_send() {
// TODO Auto-generated constructor stub
}
public void client_send1(String msg){
InetAddress group = null;
try {
group = InetAddress.getByName("239.22.21.20");
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
int port=9810;
MulticastSocket socket1=null;
try{
socket1=new MulticastSocket(port);
DatagramPacket sendPack=new DatagramPacket(msg.getBytes(),
msg.getBytes().length,group,port);
socket1.send(sendPack);
}catch(IOException e){
e.printStackTrace();
}finally{
if(socket1!=null){
socket1.close();
}
}
}
}
这是手机端发送数据的类,点击发送也不会报错,单是电脑端就是收不到
2013年10月20日 15点10分 2
level 9
莫荩堇 楼主
private void allowMulticast(){
WifiManager wifiManager=(WifiManager)getSystemService(Context.WIFI_SERVICE);
multicastLock=wifiManager.createMulticastLock("multicast.test");
multicastLock.acquire();
}
传闻中的组播锁。。。。。
我也加权限了
2013年10月20日 16点10分 3
level 9
莫荩堇 楼主
这是电脑接收端
package socket_test;
/**
* @(#)Liaotianshi.java
*
* Liaotianshi application
*
* @author
* @version 1.00 2012/12/19
*/
import java.io.*;
import java.net.*;
public class Liaotianshi implements Runnable{
client_send client_send=new client_send();
public Liaotianshi() {
client_send.client_send1("dfjdjkl");
}
@Override
public void run() {
// TODO Auto-generated method stub
InetAddress group = null;
try {
group = InetAddress.getByName("239.22.21.20");
} catch (UnknownHostException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
finalint port=9810;
// TODO, add your application code
//System.out.println("Hello World!");
MulticastSocket socket=null;
System.out.println("等待接收组播数据中。。。");
try{
byte[] buf=new byte[1000];
DatagramPacket recv=new DatagramPacket(buf,buf.length);
socket=new MulticastSocket(port);
socket.joinGroup(group);
while(true)
{
socket.receive(recv);
String str=new String(recv.getData(),0,recv.getLength());
System.out.println("从["+recv.getAddress()+"]收到"+str);
// client_listen.client_listen(str);
if(str.equals("yousheizai")){
String ip,address;
InetAddress addr = InetAddress.getLocalHost();
ip=addr.getHostAddress().toString();//获得本机IP
address=addr.getHostName().toString();//获得本机名称
System.out.println("ip:"+ip+"\n"+address);
client_send.client_send1(addr.toString());
}
}
}catch(IOException e){
e.printStackTrace();
}finally{
if(socket!=null){
try {
socket.leaveGroup(group);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
socket.close();
}
}
}
}
2013年10月20日 16点10分 4
level 9
莫荩堇 楼主
求解答
2013年10月20日 16点10分 7
level 9
然而旁边的那些阵中剑手便将手中的剑给递上了来,有的划脖子,有的割脚筋,有的挑面门,有的戳菊花,各种招式,极尽凶残之能事
2013年10月20日 18点10分 8
level 9
莫荩堇 楼主
求助
2013年10月21日 07点10分 9
level 14
我也遇到这个问题,那个时候,电脑发了,手机可以收到,但是手机发的,电脑收不到,不知道什么原因
2013年10月21日 07点10分 10
指定ip可以,广播地址不行啊
2013年10月21日 07点10分
回复 莫荩堇 :没有指定ip啊
2013年10月21日 08点10分
回复 莫荩堇 :我用你的代码测试没问题了,你的接收线程启动了吗?如果不懂,留邮箱给你发实例
2013年10月21日 12点10分
回复 松之song :[email protected],谢谢啊
2013年10月21日 15点10分
level 9
青年问禅师:「大师,我现在很富有,但是我却一点也不快乐,您能指点我该怎么做吗?」
禅师问到:「何谓富有?」
青年回道:「银行卡里8位数,五道口有3套房不算富有吗?」
禅师没说话,只伸出了一只手,
青年恍然大悟:「禅师是让我懂得感恩与回报?」
「不,土豪...我们..可以做朋友吗?」
2013年10月21日 16点10分 11
1