读书人

问个有关问题

发布时间: 2012-04-17 15:06:33 作者: rapoo

问个问题
import java.io.IOException;
import java.net.*;
class Send {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException
{
DatagramSocket ds=new DatagramSocket();
byte[] b= "hello world ".getBytes();
DatagramPacket dp=new DatagramPacket(b,b.length,InetAddress.getLocalHost(),5555);
ds.send(dp);
ds.close();

}

}
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;


class receive {

/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException
{
DatagramSocket ds=new DatagramSocket(5555);
byte[] b=new byte[1024];
DatagramPacket dp=new DatagramPacket(b,b.length);
ds.receive(dp);
System.out.println( "信息已收到 ");
ds.close();
}

}
帮我看看怎么我的主机在启动本机收包时好象进入死循环一样?


[解决办法]
没错..你机器有问题吧,要不就是你只运行了接收程序,没运行发送程序,呵呵
[解决办法]
receive方法产生一个“阻塞”。 “阻塞”是一个专业名词,它会产生一个内部循环,使程序暂停在这个地方,直到一个条件触发。

本机测试用:
DatagramPacket dp=new DatagramPacket(b,b.length,InetAddress.getByName( "127.0.0.1 "),5555);
可以接受到数据包。

用InetAddress.getLocalHost()柱塞,打印出我的本机地址feng/0.1.0.5。

读书人网 >J2SE开发

热点推荐