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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黑马伍仪华 中级黑马   /  2012-3-16 17:00  /  1614 人查看  /  8 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

package day23_07;
import java.net.*;
/*需求:讲一个数据用udp发送出去
* 思路:
* 1.先建立UDP服务
* 2.提供数据。并将数据打包
* 3.通过socket的方法,发送出去。
* 4.关闭资源
*/
public class udpsend__UDP传输 {

       
        public static void main(String[] args)throws Exception {
                DatagramSocket d=new DatagramSocket();//建立UDP服务
        byte[] b="今天好开心啊".getBytes();
                DatagramPacket ds=new DatagramPacket(b,b.length,InetAddress.getAllByName(" 10.0.5.109"),10000);
     d.close();
        }

}为什么老是报错?

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

8 个回复

正序浏览
public static void main(String[] args)throws Exception {
    DatagramSocket d=new DatagramSocket();//建立UDP服务
byte[] b="今天好开心啊".getBytes();
    DatagramPacket ds=new DatagramPacket(b,b.length,InetAddress.getByName("10.0.5.109"),10000);
d.close();
}
方法使用错误,

public DatagramPacket(byte[] buf,
                      int length,
                      InetAddress address,
                      int port)构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。length 参数必须小于等于 buf.length。

参数:
buf - 包数据。
length - 包长度。
address - 目的地址。
port - 目的端口号。
这句话中InetAddress.getAllByName(" 10.0.5.109"),返回的是InetAddress数组,应该改成InetAddress.getByName(" 10.0.5.109"),
另外你的ip地址前有个空格,再编译就会成功。
回复 使用道具 举报
InetAddress.getAllByName(" 10.0.5.109"),     应该是 getByName  不是All   All的话是返回对象数组  而这个方法的参数是要求传入一个InetAddress对象
回复 使用道具 举报
InetAddress.getAllByName(" 10.0.5.109"),返回数组
回复 使用道具 举报
public class udpsend__UDP传输 {

        
        public static void main(String[] args) throws Exception {
                DatagramSocket d=new DatagramSocket();//建立UDP服务
                String a="今天好开心啊";
                 byte[] b=a.getBytes();
                DatagramPacket ds=new DatagramPacket(b,0,b.length,InetAddress.getByName("127.0.0.1"),5000);
                d.send(ds);
     d.close();
        }
        }

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
第三步没写,数据没有发送出去
回复 使用道具 举报
本帖最后由 段浩亮 于 2012-3-16 17:22 编辑

DatagramPacket ds=new DatagramPacket(b,b.length,InetAddress.getAllByName(" 10.0.5.109"),10000);
这句话中InetAddress.getAllByName(" 10.0.5.109"),返回的是InetAddress数组,应该改成InetAddress.getByName(" 10.0.5.109"),
另外你的ip地址前有个空格

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
好像少了d.send(ds);
回复 使用道具 举报
错误信息也发上来呗
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马