黑马程序员技术交流社区

标题: 定义UDP协议是信息输出时的疑惑 [打印本页]

作者: 燕国庆    时间: 2012-11-27 22:47
标题: 定义UDP协议是信息输出时的疑惑
本帖最后由 燕国庆 于 2012-11-28 06:48 编辑

import java.net.*;
class  UdpSend
{
public static void main(String[] args) throws Exception
{
  //建立服务端
  DatagramSocket ds=new DatagramSocket(8888);
  //确定数据,定义包将已有的数据打包
  byte[] buf="UDP 哥们来了 ,hello!".getBytes();
  DatagramPacket dp=new DatagramPacket(buf,buf.length,InetAddress.getByName("cq-PC"),10000);
  //利用服务将包怕送出
  ds.send(dp);
  //关闭资源
  ds.close();
}
}


import java.net.*;
class  UdpRec
{
public static void main(String[] args) throws Exception
{
  //建立服务端Udp
  DatagramSocket ds=new DatagramSocket(10000);
  //定义包,用于接收信息
  byte[] buf= new byte[1024];//因为接收的信息是字节型的
  DatagramPacket dp=new DatagramPacket(buf,buf.length);
  //利用服务端接收功能接收信息包
  ds.receive(dp);
  //利用包的功能获取包中的信息
  String ip=dp.getAddress().getHostAddress();
   String data=new String(dp.getData(),0,buf.length);
  int port=dp.getPort();
  System.out.println("ip="+ip+"::data="+data+"::port="+port);
  //关闭资源
  ds.close();
}
}


为什么在数据输出的时候,端口号与其他数据的输出中间会有那么多的空行输出,就下面的这个截图


QQ截图20121127223727.png (3.19 KB, 下载次数: 34)

QQ截图20121127223727.png

作者: 陈莹    时间: 2012-11-27 23:21
String data=new String(dp.getData(),0,buf.length);
buf.length为1024,所以才出现那么多空格,在这里,你应该用dp.getLength() 来获得接收到的数据的长度。

作者: 燕国庆    时间: 2012-11-28 06:47
陈莹 发表于 2012-11-27 23:21
String data=new String(dp.getData(),0,buf.length);
buf.length为1024,所以才出现那么多空格,在这里, ...

恩,是这里的问题,谢谢你




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2