5黑马币
本帖最后由 YongBao_Summer 于 2015-6-1 17:57 编辑
如下是我写的一个UDP协议的发送线程类。
在学习的过程中,开始时,我按照视频中毕向东老师使用的192.168.1.254或者192.168.1.255作为InetAddress的参数传递,但是接收端并没有接受到数据,后来我改为127.0.0.1,发现还是不能传送过来,于是我使用LocalHost作为参数,发现能够成功。但是当我在命令行使用ipconfig查找自己的IPV4地址时,发现是10.10.10.105,我将其作为参数,发现依然不可以。导致我不能明白,为什么我直接用我查找到的本机Ip不能够成功,以及192.168.1.254为什么不能收到?(我用的无线网络,win7 x64环境,Ip与DNS皆选择的自动获取,不知道有没有影响,可能这是一个简单的问题,但是我好像陷入其中了,好困惑~求前辈们解救:dizzy:)
class UdpSer implements Runnable {
private DatagramSocket ds;
private DatagramPacket dp;
private byte[] buf;
public UdpSer(DatagramSocket socket) {
this.ds = socket;
}
public void run() {
try {
while (true) {
ds = new DatagramSocket();
buf = "aaaaaaaaa".getBytes();
// dp = new DatagramPacket(buf, buf.length,
// InetAddress.getLocalHost(), 10002);
dp = new DatagramPacket(buf, buf.length,
InetAddress.getByName("LocalHost"), 10002);
// System.out.println(ds.getLocalAddress().getHostAddress()+"----\n"+
// ds.getLocalAddress().getHostName()+"----\n"+
// dp.getAddress()+"**\n"+dp.getPort());
// dp = new DatagramPacket(buf, buf.length,
// InetAddress.getByName("127.0.0.1"), 1002);
ds.send(dp);
System.out.println("服务器发送完毕------------------->");
Thread.sleep(3000);
}
} catch (Exception e) {
System.out.println("服务器挂掉了....");
} finally {
if (ds != null)
ds.close();
}
}
}
|
最佳答案
查看完整内容
没看到接收端的代码,我用127.0.01是可以的
ds = new DatagramSocket();//这里添加个端口试试比如10001
你代码里dp包的目的地是10002,记得接收端线程里面定义DatagramSocket一定要写10002
如果还有问题把hosts文件打开看看是不是有奇怪的更改
C:\Windows\System32\drivers\etc\hosts,用记事本就能打开
|