黑马程序员技术交流社区

标题: UDP问题 [打印本页]

作者: 黑马伍仪华    时间: 2012-3-16 17:00
标题: UDP问题
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();
        }

}为什么老是报错?
作者: 于紫洋    时间: 2012-3-16 17:04
错误信息也发上来呗
作者: 于紫洋    时间: 2012-3-16 17:07
好像少了d.send(ds);
作者: 段浩亮    时间: 2012-3-16 17:19
本帖最后由 段浩亮 于 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地址前有个空格
作者: lipanfeng    时间: 2012-3-16 17:25
第三步没写,数据没有发送出去
作者: liumeng    时间: 2012-3-16 17:32
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();
        }
        }


作者: liumeng    时间: 2012-3-16 17:34
InetAddress.getAllByName(" 10.0.5.109"),返回数组
作者: lucky_xingxing    时间: 2012-3-16 21:19
InetAddress.getAllByName(" 10.0.5.109"),     应该是 getByName  不是All   All的话是返回对象数组  而这个方法的参数是要求传入一个InetAddress对象
作者: 李深山    时间: 2012-3-16 21:34
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地址前有个空格,再编译就会成功。




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