黑马程序员技术交流社区

标题: 下面的代码为什么会中文乱码呢?求大虾解释 [打印本页]

作者: 黑马唐浩    时间: 2012-2-5 09:02
标题: 下面的代码为什么会中文乱码呢?求大虾解释
本帖最后由 魑_魅 于 2012-2-5 09:22 编辑
  1. import java.net.*;
  2. import java.io.*;

  3. class send
  4. {
  5.         public static void main(String[] args)throws Exception
  6.         {
  7.         DatagramSocket socket = new DatagramSocket();

  8.         BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

  9.         String line = null;

  10.         while ((line = bufr.readLine()) != null)
  11.         {
  12.                 if(line.equals("over"))
  13.                         break;

  14.                  DatagramPacket packet = new DatagramPacket(line.getBytes(),line.length(),InetAddress.getByName("192.168.1.105"),7878);

  15.                 socket.send(packet);
  16.         }

  17.         bufr.close();
  18.         socket.close();

  19.         }
  20. }

  21. class rec
  22. {
  23.         public static void main(String[] args)throws Exception
  24.         {
  25.                 DatagramSocket socket  = new DatagramSocket(7878);

  26.                 while (true)
  27.                 {
  28.                         byte[] buf = new byte[1024];

  29.                         DatagramPacket packet = new DatagramPacket
  30.                                 (buf,buf.length);

  31.                         socket.receive(packet);

  32.                         String ip = packet.getAddress().getHostAddress();
  33.                         String data = new String(packet.getData(),0,packet.getLength());

  34.                         int port = packet.getPort();

  35.                         System.out.println("from " + ip + " :" + port +"\t" + data );
  36.                 }
  37.         }
  38. }


  39. public class  Demo
  40. {
  41.         public static void main(String[] args)throws Exception
  42.         {

  43.         }
  44. }
复制代码

作者: 马欢    时间: 2012-2-5 09:11
19行
line.length()应该是line.getBytes().length
因为string的.length()方法得到的是字符串长度。
作者: 黑马唐浩    时间: 2012-2-5 09:16
马欢 发表于 2012-2-5 09:11
19行
line.length()应该是line.getBytes().length
因为string的.length()方法得到的是字符串长度。 ...

谢谢,现在明白了




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