黑马程序员技术交流社区

标题: 关于socket发送端数据存储的问题 [打印本页]

作者: 林翔    时间: 2012-5-26 23:05
标题: 关于socket发送端数据存储的问题
刚刚看了视频,毕老师有一个用浏览器客户端接收数据包的例子,是先把数据发送出去浏览器客户端必须先刷新才能接收到数据并且显示出来。
那么在客户端接收数据之前,这个数据存放在哪里?
作者: 袁培育    时间: 2012-5-26 23:34
其认为是这样的,老师在第一次启动浏览器时在地址栏里输入主机名和端口名在转到就可以获得服务器返回的信息,在第二次访问时因为第一栏里有了主机名和端口名,所以不用再次输入,这时有两种方法获得服务器修改的信息,一种是点转到,另一种是刷新,其实就是再一次向服务端发送请求,就像我们看实时更新的网络直播一样,服务器那里的信息一直在变,我们要想获得最新的信息就得不段刷新即不断新服务端发送请求,因为每发送一次请求,客户端在获得信息后就会与服务端断开连接以节省资源。
作者: 马超    时间: 2012-5-27 14:44
暂时存放在流里,或者也可以存在缓冲区当中
作者: 李红飞    时间: 2012-5-27 16:12
凡是用BufferedWriter 输出流将数据流写入到socket输出流。发给服务端。都会用到缓存区
                BufferedWriter bufOut =                                         
                new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));  //把信息读取到缓存区,所以下面需要刷新

Java的缓存机制是通过JVM(Java虚拟机)提供的运行时缓存来实现的,由于JVM是不跨平台的(Java的跨平台正是通过JVM的不跨平台来实现的),
所以JVM的缓存机制没有实现本地临时存储,因此你找不到所谓Java的缓存文件夹。,到最后jvm会自动回收这些缓存垃圾


所以在下面要进行刷新操作

//                        bufOut.flush();            //刷新缓存区信息,刷新后会把信息发送到服务端

PrintWriter 流既能接收字节流又能接收字符流,而且还能刷新缓冲区,所以建议你最好用PrintWriter

作者: 胡团乐    时间: 2012-5-28 07:35
放在了流里边 ,不刷新的话,流就一直在默认等待接收,刷新后就会发送在从新接收




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