import java.net.InetAddress;
import java.net.DatagramPacket;
import java.net.DatagramSocket;public class UDPReceive
{
public static void main(String args[])
{
try
{
if(args.length!=1)
throw new IllegalArgumentException("Wrong number of args");
int port=Integer.parseInt(args[0]);
DatagramSocket dsocket=new DatagramSocket(port);
byte[] buffer=new byte[2048];
DatagramPacket packet=new DatagramPacket(buffer,buffer.length);
for(;;)
{
dsocket.receive(packet);
String msg=new String(buffer,0,packet.getLength());
System.out.println(packet.getAddress().getHostName()+":"+msg);
packet.setLength(buffer.length);
}
}
catch(Exception e)
{
System.err.println(e);
}
}
}
import java.net.InetAddress;
import java.net.DatagramPacket;
import java.net.DatagramSocket;public class UDPSend
{
public static void main(String args[])
{
try
{
if(args.length<3)
throw new IllegalArgumentException("Wrong number of args");
String host=args[0];
int port=Integer.parseInt(args[1]);
byte[] message;
String msg=args[2];
message=msg.getBytes();
InetAddress address=InetAddress.getByName(host);
DatagramPacket packet=new DatagramPacket(message,
message.length,address,port);
DatagramSocket dsocket=new DatagramSocket();
dsocket.send(packet);
dsocket.close();
}
catch(Exception e)
{
System.err.println(e);
}
}
}javac编译都没问题
java编译运行后都是抛出异常 "Wrong number of args"怎么回事呢?

解决方案 »

  1.   

    要用类 ByteArrayInputStream,和类 ByteArrayOutputStream其中的数据被写入一个 byte 数组
      

  2.   

    很明显:
    if(args.length!=1)
             throw new IllegalArgumentException("Wrong number of args");
    ....
    if(args.length<3)
             throw new IllegalArgumentException("Wrong number of args");参数不对
      

  3.   

     throw new IllegalArgumentException("Wrong number of args");
    throw new IllegalArgumentException("Wrong number of args");
    报的这个错误嘛
      

  4.   

    答:你运行程序的方式不对.
    1)运行UDPReceive 方式是(设端口号是:9999,IP:192.168.1.177):
    java UDPReceive  99992)运行UDPSend方式是(设发送给UDPReceive所在的机器的信息是:"你好吗?"):
    java UDPSend 192.168.1.177  9999  "你好吗?"