(两个月以前,我参加了某个比赛。做了个跟socket服务器有关的项目。比赛完后本来就想立刻写个博文总结一下我的技术经验的,结果拖延症晚期一从紧张的环境中解放就开始各种浪……直到现在才有点心情敲文字)(我做的东西很简单。跟微信端,网页前端,硬件开发板,后台服务器都有关。我负责的是硬件开发板和后台服务器的代码部分,我尝试着都稍微总结一下,贴点代码吧……)
(先从后台服务器开始吧,这点的内容比较少也比较有用)
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
怎么使用java实现socket通信,这个用关键词一搜,我想网上应该就有一大堆现成的代码了吧,所以这些基础的基础我就不讲了。我以问题作为标题的形式总结一下我在实现服务器过程中磨蹭出来的几个小经验。
(对了,我使用的是阿里云10块钱一个月的学生服务器,操作环境是windows server 2008,搭了java、Apache、MySQL、PHP的环境。)
(推荐一个调试socket时很好用的工具:SocketTool 。免安装,只有一个exe文件,轻便简洁。使用方法打开就知道了。)
①小经验:服务器在与客户端建立连接之后,CPU使用率总是100%怎么办?
原因:建立连接后启动新的线程,如果线程中有简单粗暴的不含阻塞的while(1)循环,会持续占用CPU,导致CPU占用率极高。
解决:在while(1)的大循环中插入一句sleep(1),即阻塞1毫秒,java线程内则使用Thread.sleep()的静态方法阻塞线程。效果奇佳如图(用C语言演示)