想通过构造方法DatagramPacket(byte[] buf, int length, InetAddress address, int port) 构造一个DatagramPacket,
第 一种写法:DatagramPacket dp = new DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("localhost"),6666);
这个没有问题;
第二种写法:
DatagramPacket dp = new DatagramPacket(str.getBytes(),str.length(),"127.0.0.1",6666);出现错误:---------- javac ----------
UDPClient.java:8: 找不到符号
符号: 构造函数 DatagramPacket(byte[],int,java.lang.String,int)
位置: 类 java.net.DatagramPacket
DatagramPacket dp = new DatagramPacket(str.getBytes(),str.length(),"127.0.0.1",6666);
                    ^
1 错误输出完成(耗时 3秒)但对于一个Socket,如果我写成Socket s = new Socket("127.0.0.1",6666);,这样却没有问题,请问这是为什么?

解决方案 »

  1.   

    因为DatagramPacket没有提供你想象的这种构造方法.看一下api文档中DatagramPacket的构造方法介绍吧.
      

  2.   

    这是构造方法:DatagramPacket(byte[] buf, int length, InetAddress address, int port)
    这一Socket的构造方法:Socket(InetAddress address, int port) 
    对于Socket的构造方法写成:Socket s = new Socket("127.0.0.1",6666);
              Socket s = new Socket(InetAddress.getByName("localhost"),6666); 
    都没有问题,对于InetAdrress address,怎么会有问题?
      

  3.   

    Socket提供了直接用String的构造方法,DatagramPacket没有提供,这个有什么联系呢.