java 将数据包发送给_Java DatagramSocket将数据包发送到255.255.255.255失败

博主在尝试使用Java编写网络程序时遇到问题,无法成功将数据包发送到255.255.255.255或192.168.1.255(广播地址),但可以发送到伴侣的IP。代码中使用了DatagramSocket和DatagramPacket。ifconfig显示博主的网络接口包括本地环回、以太网等。问题可能涉及网络配置或广播限制。
摘要由CSDN通过智能技术生成

我正在用Java编写一个网络程序,我想将一些数据包发送到255.255.255.255,但是即使将它们发送到192.168.1.255(根据ifconfig命令的输出,它是广播地址)也失败了。但是,当我将它们发送到我伴侣的IP时,它可以正常工作。

这是我程序的代码:

public class StackOverFlow {

public static void main(String[] args) {

Network net= new Network();

Scanner input= new Scanner(System.in);

while(input.hasNext())

net.sendMessage(input.nextLine());

}

}

我已经使用DatagarmSocket和DatagramPacket做到了,这是我对Network的实现:

class Network {

DatagramSocket socket;

public Network() {

try {

socket = new DatagramSocket(8027);

socket.connect(InetAddress.getByName("255.255.255.255"), 8027);

} catch (Exception e) {

System.err.println("Connection failed. " + e.getMessage());

}

listen();

}

public void listen() {

new Thread() {

public void run() {

while (true) {

try {

byte[] buf = new byte[1000];

DatagramPacket packet = new DatagramPacket(buf,

buf.length);

socket.receive(packet);

String message = new String(buf);

System.out.println("Recieved: " + message);

if (message.equals("end"))

return;

} catch (Exception e) {

System.err.println(e.getMessage());

}

}

}

}.start();

}

public void sendMessage(String message){

byte[] buf= message.getBytes();

DatagramPacket packet= new DatagramPacket(buf, buf.length);

try{

socket.send(packet);

}catch(Exception e){

System.err.println("Sending failed. " + e.getMessage());

}

}

没有异常被抛出。

我在一个临时网络中。

我的伴侣正在使用kubuntu 11.04时,我正在使用MAC OS X 10.6。这是ifconfig输出:

lo0: flags=8049 mtu 16384

inet6 ::1 prefixlen 128

inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1

inet 127.0.0.1 netmask 0xff000000

gif0: flags=8010 mtu 1280

stf0: flags=0<> mtu 1280

en0: flags=8863 mtu 1500

inet6 fe80::21f:f3ff:fed5:4779%en0 prefixlen 64 scopeid 0x4

inet 192.168.1.1 netmask 0xffffff00 broadcast 192.168.1.255

ether 00:1f:f3:d5:47:79

media: autoselect (100baseTX ) status: active

supported media: autoselect 10baseT/UTP 10baseT/UTP 10baseT/UTP 10baseT/UTP 100baseTX 100baseTX 100baseTX 100baseTX 1000baseT 1000baseT 1000baseT none

en1: flags=8863 mtu 1500

inet6 fe80::21d:4fff:feff:2b4d%en1 prefixlen 64 scopeid 0x5

inet 213.233.170.97 netmask 0xfffffc00 broadcast 213.233.171.255

ether 00:1d:4f:ff:2b:4d

media: autoselect status: active

supported media: autoselect

fw0: flags=8863 mtu 2030

lladdr 00:21:e9:ff:fe:bc:79:b2

media: autoselect status: inactive

supported media: autoselect

en2: flags=8863 mtu 1500

ether 00:1f:f3:b6:2c:be

media: autoselect status: inactive

supported media: none autoselect 10baseT/UTP

vmnet1: flags=8863 mtu 1500

inet 192.168.149.1 netmask 0xffffff00 broadcast 192.168.149.255

ether 00:50:56:c0:00:01

vmnet8: flags=8863 mtu 1500

inet 192.168.73.1 netmask 0xffffff00 broadcast 192.168.73.255

ether 00:50:56:c0:00:08

en0是我用来连接伴侣的设备。

请简化一下,我是新手:)

提前致谢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值