本帖最后由 王飞 于 2012-7-17 11:55 编辑
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class aa {
public static void main(String[] args)throws Exception {
//1.创建udp服务
DatagramSocket ds = new DatagramSocket();
//2.确定数据,并封装成数据包
// byte[] buf = "ni hao a".getBytes();
//DatagramPacket dp = new DatagramPacket(buf, buf.length,InetAddress.getByName("192.168.1.101"),11);
此处为什么要封装包?我不封装直接读取岂不方便。
我不封装包不行吗 往流中直接写入字节数据 ds.send("行不行啊".getBytes());不是更方便吗?本人认为为何要多此一举呢。。。
有点不解
//3.通过Socket服务讲数据发送出去
// ds.send(dp);
//4.关闭资源
ds.close();
}
}
class UDP2 {
public static void main(String[] args)throws Exception {
//1.创建sockect服务,建立端点
DatagramSocket ds = new DatagramSocket(11);
//2.建立数据包,用于存储数据
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
上面如果不定义包,而是直接把客户端传送过来的数据直接全部读取接收不行吗?这不是更方便,省去了装包的麻烦
并且把数据都装进包里还站内存,
然后需要什么直接从流中读取多方便
//3.通过服务的receive方法讲数据存入包中
ds.receive(dp);
//4.通过数据包获取数据
String ip = dp.getAddress().getHostAddress();
String data = new String(dp.getData(),0,dp.getLength());
System.out.println("ip:"+ip+"------"+"data:"+data);
//5.关闭资源
ds.close();
}
} |