这样改改可能可以:import java.io.*;
import java.net.*;
public class a1807 
  {
static final int port = 9696;
public static void main(String args[]) throws Exception
{
if (args.length!=2)
  {
System.out.println("java a1807 <hostname> <msg>");
System.exit(0);
}
InetAddress address=InetAddress.getByName(args[0]);
//int msglen = args[1].length();
//byte msg[] = new byte[msglen];
byte msg[] = args[1].getBytes();
//args[1].getBytes(0,msglen,msg,0);
DatagramPacket packet = new DatagramPacket(msg,msg.length,address,port);
DatagramSocket socket = new DatagramSocket();
socket.send(packet);
socket.close();
}
}

解决方案 »

  1.   

    String str4=new String("中文".getBytes("iso8859-1"),"gb2312");
      

  2.   

    这样应该可以,我在win2000下通过:
    al806.java:
    import java.io.*;
    import java.net.*;
    public class al806 
      {
    static final int port=9696;
    public static void main(String args[]) throws Exception
      {
        byte buf[]=new byte[1024];
    String str;
    for ( ; ; )
      {
      DatagramPacket packet = new DatagramPacket(buf,buf.length);
      DatagramSocket socket = new DatagramSocket(port);
      socket.receive(packet);
      str = new String(packet.getData(),0,packet.getLength());
      System.out.println("UDP receive form " + 
      packet.getAddress()+"\npacket port=" + 
      packet.getPort() + "\nmsg=" + str);
      socket.close();
      }
      }
      }al807.java:
    import java.io.*;
    import java.net.*;
    public class al807 
      {
    static final int port = 9696;
    public static void main(String args[]) throws Exception
    {
    if (args.length!=2)
      {
    System.out.println("java a1807 <hostname> <msg>");
    System.exit(0);
    }
    InetAddress address=InetAddress.getByName(args[0]);
    byte[] msg=args[1].getBytes();
    DatagramPacket packet = new DatagramPacket(msg,msg.length,address,port);
    DatagramSocket socket = new DatagramSocket();
    socket.send(packet);
    socket.close();
    }
    }
    试试吧!