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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 彭波 中级黑马   /  2013-4-4 21:48  /  1203 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 彭波 于 2013-4-5 16:42 编辑
  1. /*
  2. 需求:建立一个文本转换服务器
  3. 客户端给服务端发送文本,服务端会将文本转成大写在返回
  4. 给客户端
  5. 而且客户端可以不断的尽兴文本转换,当客户端输入over时
  6. 转换结束


  7. 分析:
  8. 客户端:既然是操作设备上的数据,那么就可以使用IO技术,
  9.                          并按照IO的操作规律来思考。
  10. 源:键盘录入
  11. 目的:网络设备,网络输出流。而且操作的是文本数据。可以
  12.             选择字符流
  13.             
  14. 步骤:
  15. 1,建立服务
  16. 2,获取键盘录入
  17. 3,将数据发给服务端
  18. 4,然后取服务端返回的大写数据
  19. 5,结束,关资源

  20. 都是文本数据,可以使用字符流,提高效率,加入缓冲
  21. */
  22. import java.io.*;
  23. import java.net.*;
  24. class TransClient
  25. {
  26.         public static void main(String[] args)throws Exception
  27.         {
  28.                 Socket s = new Socket("114.98.251.139", 10005);
  29.                
  30.                 //定义读取键盘数据的流对象
  31.                 BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
  32.                
  33.                 //定义目的,将数据写入到socket输出流,发给服务端
  34.                 BufferedWriter bufOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
  35.                
  36.                 //定义一个socket读取流,读取服务端返回的大写信息
  37.                 BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
  38.                
  39.                 String line = null;
  40.                
  41.                 while((line=bufr.readLine()) != null)
  42.                 {
  43.                         if("over".equals(line))
  44.                                 break;
  45.                                 
  46.                         bufOut.write(line);        
  47.                         bufOut.newLine();//换行
  48.                         bufOut.flush();//刷新
  49.                         
  50.                         String str = bufIn.readLine();
  51.                         
  52.                         System.out.println("server: "+str);
  53.                 }
  54.                
  55.                 bufr.close();//关闭键盘录入
  56.                 s.close();
  57.         }        
  58. }

  59. /*
  60. 服务端:
  61. 源:socket读取流
  62. 目的:socket输出流
  63. 都是文本,装饰
  64. */
  65. class TransServer
  66. {
  67.         public static void main(String[] args)throws Exception
  68.         {
  69.                 ServerSocket ss = new ServerSocket(10005);
  70.                
  71.                 Socket s = ss.accept();
  72.                
  73.                 String ip = s.getInetAddress().getHostAddress();
  74.                 System.out.println(ip+"...connect");
  75.                
  76.                 //读取socket 读取流中的数据
  77.                 BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
  78.                
  79.                 //目的:socket输出流,将大写数据写入到socket输出流,并发送给客户端
  80.                 BufferedWriter bufOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
  81.         
  82.                 String line = null;
  83.                 while((line=bufIn.readLine()) != null);
  84.                 {
  85.                         System.out.println(line);
  86.                         bufOut.write(line.toUpperCase());        
  87.                         bufOut.newLine();
  88.                         bufOut.flush();
  89.                 }
  90.                
  91.                 s.close();
  92.                 ss.close();
  93.         }
  94. }
复制代码
大家用上面的代码测试下(测试时ip换成你们自己的)。我仔细查看了下,都和老师一样啊,怎么客户端的信息没有发出去啊,都newLine和floush了啊,咋么回事,着急?????
都连接上了,直接上图了
(1) 服务器端,都连接上了,

(2) 客户端,键盘输入字母,回车,没有反应啊{:soso_e118:}

评分

参与人数 1技术分 +2 收起 理由
滔哥 + 2

查看全部评分

2 个回复

倒序浏览
我擦,楼主这个问题 太难找了 ,我找了足足30分钟,眼都快瞎了

QQ截图20130405120600.png (10.7 KB, 下载次数: 1)

QQ截图20130405120600.png

评分

参与人数 1技术分 +1 收起 理由
张熙韬 + 1

查看全部评分

回复 使用道具 举报
赵晓东 发表于 2013-4-5 12:07
我擦,楼主这个问题 太难找了 ,我找了足足30分钟,眼都快瞎了

嗯,搞得不丑,是这个地方的错误,谢谢
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马