本帖最后由 李厚斌 于 2014-4-6 16:03 编辑
- class UdpReceive implements Runnable{
- private DatagramSocket ds;
- UdpReceive(DatagramSocket ds){
- this.ds=ds;
- }
- @Override
- public void run() {
- // TODO Auto-generated method stub
- byte[] buf=new byte[1024];
- DatagramPacket dp=new DatagramPacket(buf,buf.length);
- while(true){
- try {
- ds.receive(dp);
- String ip=dp.getAddress().getHostAddress();
- //String data=new String(dp.getData(),0,dp.getLength());//这个地方。如果我写成这样的话
- byte[] b=dp.getData();
- String data=new String(b,0,b.length);
- System.out.println(data+"ffe");
- System.out.println(data+":"+dp.getAddress().getHostAddress());
- } catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
-
- }
- }
-
- }
复制代码 代码是udp服务端接受信息的。。全程是模拟两个线程一个线程接受一个线程发送。。
见鬼了。。。琢磨半天
//String data=new String(dp.getData(),0,dp.getLength());
这个地方。如果我写成这样的话
System.out.println(data+"ffe");
System.out.println(data+":"+dp.getAddress().getHostAddress());
后面的这两句话能正常打印。。。
可是如果我这么写
byte[] b=dp.getData();
String data=new String(b,0,b.length);
就不能。只能打印data。。后面的全部打印不到了。。能完全读到data数据
|