网络编程中服务器发送的消息,客户端收不到也没有反应的几点原因
来源:互联网 发布:js绑定两个click事件 编辑:程序博客网 时间:2024/05/18 00:44
在使用 PrintWriter 时出现的问题
- PrintWriter out = new PrintWriter(new BufferedWriter(
- new OutputStreamWriter(this.client.getOutputStream(),
- "utf-8")));
- ..............
- out.print("消息已收到");
- out.flush();
- ............
原因: 因为PrintWriter.print()比PrintWriter.println()少了换行符,客户端永远收不到一行结束的标志。
直到服务器退出时客户端才可以看见返回的消息
在使用 BufferedWriter 时也会出现同样的问题
当使用write()方法时为了避免上述问题可以这样使用:
- bufferedwriter.write();
- bufferedwriter.newLine();
- bufferedwriter.flush();
还有一种可能是在关闭流的时候把socket也关闭了。
例如,当这个socket既有读又有写(socket.getInputStream() , socket.getOutputStream())的时候,
当读完了数据,以后也不再用了这个流了,根据流的使用原则,此时流应该关闭,但是在socket中,我尝试了很多次,
当关闭任何一个与socket有关的流时,再去判断socket,却发现此时socket已经关闭。程序会报异常。
有可能是我的程序有问题,但是根据以上思路,我尝试了另一种解决方法:
方法原理很简单,就是在流之间传递数据的时候,在最后面加上一个标志字符串,譬如“end”并且单独成行,
那么在读取流数据的时候,就可以判断是否读到最后了,如果读到最后,则使用 break退出循环,而流不再显示关闭。
这样就不会出现阻塞现象,程序可以很好的跑起来
0 0
- 网络编程中服务器发送的消息,客户端收不到也没有反应的几点原因
- 网络编程中服务器发送的消息,客户端收不到也没有反应的几点原因
- spring JMS、activemq中消费者收不到生产者发送的消息的原因解析
- Socket编程服务器不能打印客户端发送的消息
- repositoryItemButtonEdit ButtonClick没有反应的原因
- fragment中startActivityForResult接收不到的几种常见原因
- 公众号用户发送消息后台PHP回复没有反应的解决办法
- 关于winsock中网络编程事件模型和窗口消息模型中FD_WRITE的理解与数据的发送需要注意的关键点
- 关于winsock中网络编程事件模型和窗口消息模型中FD_WRITE的理解与数据的发送需要注意的关键点
- 激光推送收不到消息的原因总结
- EventBus activity收不到post的消息原因分析
- MFC中A窗口收不到B窗口发送的消息,怎么回事
- WEB客户端发送给WEB服务器的HTTP请求消息
- 接收端收不到 SendMessage发送的消息
- 基于mina服务器框架在android客户端接中文收不到消息以及发送不出中文的的问题
- 基于mina服务器框架在android客户端接中文收不到消息以及发送不出中文的的问题
- 基于mina服务器框架在android客户端接中文收不到消息以及发送不出中文的的问题
- 简单的网络编程--服务器,客户端呼应
- Java关键字final、static使用总结
- MQTT
- 关于软件智能化理念的解释
- 【leetCode】Path Sum II python实现
- 上下左右滑动测试
- 网络编程中服务器发送的消息,客户端收不到也没有反应的几点原因
- 使用github搭建网站
- JavaScript让登录或搜索文本框自动获得焦点
- JavaSE学习52:细说多线程之Thread类和Runable接口
- Struts2数据处理与上传
- iOS知识大总结
- POJ 3273 Monthly Expense
- Java - PAT - 1002. 写出这个数 (20)
- hibernate加ajax异步实现数据库中的新闻类别字段的获取,并且表单还是带有图片上传功能的