通信阶段的学习伊始,自己总有个习惯没有转变过来:我总是习惯性的将Server端和Client端放在一起编写,将它们的.java文件放在同一个package当中去。
这不仅是一个不好的编程方式,而且,更严重的是,有的时候它会导致一些难以预料的错误。
今天,这个不好的习惯就给我带来了很衰的恶果。
我将Server端和Client端发送消息的方法全部写成静态的,并封装在一个类当中,结果我定义的通信流程完全运行不了,调用的方法总是返回莫名其妙的结果。为了解决问题,我一行一行的查看代码,查了1个小时都没解决。最后,请老师帮我查看解决,他一样就指出了错误:最初的结构就出错了!!
我们知道,Server——Client模型当中的Server端和Client端分别占用了二个不同的端口port,这就意味着这是二个不同的程序!!二个不同的程序原则上是不能共享同一份资源的,比如图片,类,静态属性,静态方法 ——比如, 当某个静态属性同时被客户端C和服务端S调用,这个时候就会出现数据调用过程中值得变化,结果悲剧鸟。这有点类似于并发当中的数据锁定问题。
上述问题其实用面向对象的思想很好理解:在实际应用当中,Server和Client应该是隔绝开来的。Client端只知道,我向外(一个Socket)发送信息,并可以从中受到信息,至于是什么东东持有这个Socket,它不用知道。Sevre也应该是这样的。比如:我位于长沙的电脑上装了一个QQ,而腾讯的QQ服务器则远在浙江杭州,我这边的QQ能与别人通话,但是却不知道任何有关服务端的事情。
写上这段话,既是警醒自己,也是提醒别人:记得,通信是二个程序的事情!!
分享到:
相关推荐
这是一个UDP协议通信的程序! 这是一个UDP协议通信的程序!
6.如何在两个执行程序间进行数据通信?(Visual C++编程 源代码)6.如何在两个执行程序间进行数据通信?(Visual C++编程 源代码)6.如何在两个执行程序间进行数据通信?(Visual C++编程 源代码)6.如何在两个执行...
这是一个用VC7。0写的在两个执行程序间进行数据通信的程序。
用VC++编写USB接口通信程序?肰C++编写USB接口通信程序?肰C++编写USB接口通信程序
java_Socket通信_聊天程序.pdf
三菱___(内有程序说明).zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例三菱___(内有程序说明).zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例三菱___(内有程序说明).zip三菱PLC编程...
单片机双机通信课程设计文档,包含数码管演示程序和proteus仿真
DCDC电路控制程序及与上位机通信,boost控制电路及采样,485通信
wave propagation_大气通信_大气湍流仿真_光通信仿真_大气湍流_大气湍流多步仿真程序_源码.zip
wave propagation_大气通信_大气湍流仿真_光通信仿真_大气湍流_大气湍流多步仿真程序.zip
mimo无线通信技术及matlab的实现上的相关代码与注释
本文是VB串口通信的一个详细实例的程序源代码
lvds通信协议程序,已调通,并包含一些相关资料
模拟UWB通信系统仿真程序,包括调制方式,波形选择等等,与《超宽带通信基本原理》书结合使用非常好!
java_Socket通信聊天程序,感兴趣的朋友可以研究下
matlab串口助手源程序,串口通信助手!
28335通信程序,RS422程序代码,源代码
LIN通信程序 用飞思卡尔芯片实现LIN通讯的代码程序。经实际测试可用
串口通信程序,可以很好的理解串口通信,能通过MATLAB进行调试