A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 燕国庆 高级黑马   /  2012-11-27 22:47  /  1292 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 燕国庆 于 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, 下载次数: 6)

QQ截图20121127223727.png

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 神马都是浮云

查看全部评分

2 个回复

倒序浏览
String data=new String(dp.getData(),0,buf.length);
buf.length为1024,所以才出现那么多空格,在这里,你应该用dp.getLength() 来获得接收到的数据的长度。

评分

参与人数 1技术分 +1 收起 理由
崔政 + 1 一针见血

查看全部评分

回复 使用道具 举报
陈莹 发表于 2012-11-27 23:21
String data=new String(dp.getData(),0,buf.length);
buf.length为1024,所以才出现那么多空格,在这里, ...

恩,是这里的问题,谢谢你
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马