黑马程序员技术交流社区

标题: Tcp键盘录入 [打印本页]

作者: dunwu    时间: 2013-7-17 06:47
标题: Tcp键盘录入
本帖最后由 杨兴庭 于 2013-7-18 18:12 编辑
  1. /*为什么客户端把数据写入到Socket输出流,
  2.           服务端却从Socket读取流中读取数据?具体是怎么实现的?
  3.         */
  4.                 //Socket 客服端 把数据写入到Socket输出流中;
  5.                         BufferedWriter bufwOut = new BufferedWriter
  6.                                 (new OutputStreamWriter (s.getOutputStream()));
  7.         //SocketServer 服务端 从Socket读取流中读取数据;
  8.                         BufferedReader bufrIn = new BufferedReader
  9.                                 (new InputStreamReader (s.getInputStream()));
复制代码

作者: 王海旺    时间: 2013-7-17 08:42
BufferedWriter是缓冲输入流,意思是当你调用BufferedWriter的write方法时候,数据是先写入到缓冲区里,并没有直接写入到目的文件里。
你必须调用BufferedWriter的flush()方法。
作者: 哪颗最亮的星星    时间: 2013-7-17 09:05
你想想源是什么:目的是什么,我想就能搞清楚了,这是一个相对的问题,对于客户端来说,想要给服务端发送数据,哪就是写了,相对于服务端来说,要想读取客户端发过来的数据,哪就有读了,它们用的是一个Socket的对象。只于BufferedWriter、BufferedReader都是加入缓冲技术的字符流,网络上传送的都是字节流,所以还要用到转换流,InputStreamReader、OutputStreamWriter。

作者: 左手神刀    时间: 2013-7-17 10:58
过程是这个样子的:
键盘录入的数据------>InputStreamReader(将键盘录入的字节流转为字符流)
------>BufferedReade(键键盘录入的字节数据变成字符数据后读入到这个缓冲区)
------>BufferedWriter(将读取到的字符数据转到这个输出缓冲区中)
------> OutputStreamWriter (字符数据再转换成字节数据)
------->socket(s.getOutputStream()数据来到了socket中)
----->socket(socket 带着数据就跑到了服务端)

------->InputStreamReader(利用s.getInputStream()将socket中的字节数据转换成字符数据)
------->BufferedReader(socket中的字节数据便成字符数据后来到了服务端的字符缓冲区)
------>数据往下再怎么走就看服务端怎处理了。

作者: Candy    时间: 2013-7-17 11:12
楼上的还让人活不啊
作者: Sword    时间: 2013-7-17 14:33
Candy 发表于 2013-7-17 11:12
楼上的还让人活不啊

呵呵,好好努力,你也可以的!
作者: 白_蓝(八公)    时间: 2013-7-17 21:25
额~我给你举个例子!希望对你有帮主!!
首先有一个文本F····我们要对文本进行操作,最好的方法就是让它变成一个对象,然后方便我们对其进行操作!!所以我们可以使用字符流的方法对F进行操作。
这里就涉及了读取和写入流,Writer和Reader.流你可以理解它有一个独立的空间,就是缓冲区,把文本存进去之后,我们就在流中对其进行我们需要的操作。为了更好的操作流中的F,我们就可以使用修饰好的BufferedWriter 和 BufferedReader  ,利用里面的方法对F进行操作好了我们就把流中的F返回!!

我觉得例子是想让你理解其中的过程···如果你理解了,那么你的问题就迎刃而解了!!希望对你有所帮助哈




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