黑马程序员技术交流社区
标题:
udp 模拟发送的小问题
[打印本页]
作者:
李厚斌
时间:
2014-4-3 03:05
标题:
udp 模拟发送的小问题
本帖最后由 李厚斌 于 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数据
作者:
osully
时间:
2014-4-3 09:05
String data=new String(dp.getData(),0,dp.getLength());
这句是标准写法,完全没问题
应该是你其他地方的问题
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2