A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© wuhyoung 中级黑马   /  2014-5-27 07:50  /  914 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. public class TestDemo4 {

  2.         public static void main(String[] args) throws Exception{

  3.                 new Thread(new Client()).start();
  4.                 new Thread(new Server()).start();

  5.         }

  6. }

  7. class Server implements Runnable
  8. {
  9.        
  10.         public void run()
  11.         {
  12.                 try {
  13.                         rever();
  14.                 } catch (Exception e) {
  15.                         e.printStackTrace();
  16.                 }
  17.         }
  18.         public void rever() throws Exception
  19.         {
  20.                 ServerSocket ss = new ServerSocket(10001);
  21.                
  22.                 Socket s = ss.accept();
  23.                
  24.                 InputStream is = s.getInputStream();
  25.                
  26.                 int ch = -1;
  27.                
  28.                 while((ch = is.read())!=-1)
  29.                 {
  30.                         System.out.print((char)ch);
  31.                 }
  32.                
  33.         /*        OutputStream os = s.getOutputStream();
  34.                 s.shutdownOutput();
  35.                
  36.                 String http = "这是服务器端协议";
  37.                 os.write(http.getBytes());*/
  38.                

  39.         }
  40. }

  41. class Client implements Runnable
  42. {
  43.        
  44.         public void run()
  45.         {
  46.                 try {
  47.                         sender();
  48.                 } catch (Exception e) {
  49.                         e.printStackTrace();
  50.                 }
  51.         }
  52.         public void sender() throws Exception
  53.         {
  54.                 String str = "这是客户端的协议";
  55.                 InetAddress ia = InetAddress.getLocalHost();
  56.                 Socket s = new Socket(ia,10001);
  57.                
  58.                 OutputStream os = s.getOutputStream();
  59.                
  60.                 os.write(str.getBytes());


  61.                 //s.shutdownInput();
  62.                
  63.                
  64.                
  65.                
  66.                 InputStream is = s.getInputStream();
  67.                
  68.                 int ch = -1;
  69.                 while((ch = is.read())!=-1)
  70.                 {
  71.                         System.out.print((char)ch);
  72.                 }
  73.                
  74.                
  75.                                
  76.         }

  77. }
复制代码



这段代码为什么传递的数据是乱码?

评分

参与人数 1技术分 +1 收起 理由
zzkang0206 + 1 神马都是浮云

查看全部评分

1 个回复

倒序浏览
xmvper 发表于 2014-5-27 10:00
问题就在服务端的这句话  System.out.print((char)ch);,你是一个字节的接收和写入,因为每个汉字有两个字 ...

嗯,谢谢,很有道理
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马