日期:2014-05-20  浏览次数:20695 次

JAVA Socket发送广播问题
哪位大虾帮俺看看以下代码 看是哪出问题了 发送后C++无法接收 C++都无法绑定Socket定义的端口 应该可以说明JAVA端口没设置好吧
import java.net.*; //导入java.net包

public class Weather extends Thread { // 创建类。该类为多线程执行程序

int port = 2708; // 定义端口

InetAddress iaddress = null; // 创建InetAddress对象

MulticastSocket socket = null; // 声明多点广播套接字

Weather() { // 构造方法

try {

iaddress = InetAddress.getByName("224.0.0.1"); // 实例化InetAddress,指定地址

socket = new MulticastSocket(port); // 实例化多点广播套接字 

//socket.setTimeToLive(1); // 指定发送范围是本地网络
socket.setBroadcast(true);

socket.joinGroup(iaddress); // 加入广播组

} catch (Exception e) {
e.printStackTrace(); // 输出异常信息
}

}

public void run() { // run()方法


while (true) {

DatagramPacket packet = null; // 声明DatagramPacket对象
String str="zzzbbb";
byte data[] =str.getBytes(); // 声明字节数组
packet = new DatagramPacket(data, data.length, iaddress, port); // 将数据打包

try {
socket.send(packet); // 发送数据
System.out.println(str);
} catch (Exception e) {

e.printStackTrace(); // 输出异常信息

}

}

}

public static void main(String[] args) { // 主方法

Weather w = new Weather(); // 创建本类对象

w.start(); // 启动线程
/*ListenData obj=new ListenData();
while(true){

System.out.println(obj.GetMessage("224.0.0.1", 2707));
}*/

}

}



------解决方案--------------------
你使用的是UDP吧

如果不是TCP的话,客户端肯定没法建立连接啊

去看看C++里 有什么创建UDP监听方法吧

建议楼主找找网络通信方面的知识,先看下TCP和UDP的概念上的区别

然后再看看Java和C++对他们分别的实现代码的例子