聊天室(Socket)尝试中所遇到的问题
来源:互联网 发布:淘宝生e经的入口在哪里 编辑:程序博客网 时间:2024/05/22 10:35
首先,由于由于Socket的输入流以及输出流一旦关闭,Socket也会随之关闭,起先没注意到这一点,所以就各种报错。
后来又发觉在聊天室发送的数据在服务端根本收不到,输入到了控制台也看不到信息,后来才发觉Socket的输入和输出流是有带缓冲区的,把缓冲区的大小打印出来了,才发觉有9000多,而我在测试的时候可能只发送了一条信息,导致了误以为信息发送失败了。解决的办法也很简单,Socket有带设置缓冲区大小的方法,调用此方法进行合理设置就行。
再者,解决完上面的问题后,又发现读取还是有问题,信息还是照样读不出来,检查了一下读取的代码,发觉读取的时候用的是BufferedRead的readLine()方法,而我设计的聊天室暂时只监听了发送按钮,这样子就导致了一个问题,readLine()读取数据的时候是以结束标记或者换行符为准的,所以信息就一直堵在那里读不出来。
最后,上面的问题都解决后,程序也能正常运行了,不过看了下CPU的利用率发觉飚得老高了,重新看了一下代码,发觉在服务器端由于要一直检查有没有信息,所以放接受信息的代码放在一个while(true)的死循环内了,这样子即使是没有信息,也要一直跑while循环,cpu就大部分时间被占用了。解决办法就是每跑一次循环体就让处理信息的线程睡眠一下,睡眠时间最好是在500-1000,因为如果有信息的话,睡眠时间太久了的话,会导致信息的延迟。
总结了一下,发觉其实还有很多更好的方法去代替上面那一堆挫挫的东西,自己还是很烂啊,这样子的代码都不敢见人了。重新优化调整后再贴代码。
- 聊天室(Socket)尝试中所遇到的问题
- socket的编程所遇到的问题
- Android客户端,PC服务器,Socket连接所遇到的问题
- (持续)编程中所遇到的问题
- 学习中目前所遇到的问题
- springmvc开发中所遇到的问题
- android中Spinner所遇到的问题
- hadoop 集群中所遇到的问题
- bootstrap开发中所遇到的问题
- Socket所遇到的坑
- 关于尝试spinner中遇到的小问题
- ipv6 socket 编程中遇到的问题
- socket通信中遇到的问题
- Android socket 开发中遇到的问题.
- dwr reverse 做聊天室遇到的问题.
- Linux 遇到apt update中遇到更新失败的问题尝试方法
- Socket遇到的问题
- nodejs 中socket的聊天室实例
- [warp portal] tech news websites
- C#中的枚举型(全)
- 【转载】安全单例
- 网上支付之易宝支付接入规范
- 软件架构设计
- 聊天室(Socket)尝试中所遇到的问题
- Linux CPU利用率计算原理及内核实现
- EAS用户密码加密解密方法
- solaris常用命令
- SlidingMenu-master中的example怎样导入eclipse运行
- HDU 4006 优先队列
- C# 基本概念7
- Web Service之基本概念,axis自带案例介绍和第一个Web Service程序
- try-catch和throw,throws的区别和联系