通信阶段的学习伊始,自己总有个习惯没有转变过来:我总是习惯性的将Server端和Client端放在一起编写,将它们的.java文件放在同一个package当中去。
这不仅是一个不好的编程方式,而且,更严重的是,有的时候它会导致一些难以预料的错误。
今天,这个不好的习惯就给我带来了很衰的恶果。
我将Server端和Client端发送消息的方法全部写成静态的,并封装在一个类当中,结果我定义的通信流程完全运行不了,调用的方法总是返回莫名其妙的结果。为了解决问题,我一行一行的查看代码,查了1个小时都没解决。最后,请老师帮我查看解决,他一样就指出了错误:最初的结构就出错了!!
我们知道,Server——Client模型当中的Server端和Client端分别占用了二个不同的端口port,这就意味着这是二个不同的程序!!二个不同的程序原则上是不能共享同一份资源的,比如图片,类,静态属性,静态方法 ——比如, 当某个静态属性同时被客户端C和服务端S调用,这个时候就会出现数据调用过程中值得变化,结果悲剧鸟。这有点类似于并发当中的数据锁定问题。
上述问题其实用面向对象的思想很好理解:在实际应用当中,Server和Client应该是隔绝开来的。Client端只知道,我向外(一个Socket)发送信息,并可以从中受到信息,至于是什么东东持有这个Socket,它不用知道。Sevre也应该是这样的。比如:我位于长沙的电脑上装了一个QQ,而腾讯的QQ服务器则远在浙江杭州,我这边的QQ能与别人通话,但是却不知道任何有关服务端的事情。
写上这段话,既是警醒自己,也是提醒别人:记得,通信是二个程序的事情!!
分享到:
相关推荐
在计算机科学领域,程序间的通信(Inter-Process Communication, 简称IPC)是一个关键的概念,它涉及到多个独立运行的程序如何有效地交换信息。在这个场景中,我们有一个使用VC7.0(Visual C++ 2003)编写的示例程序...
6.如何在两个执行程序间进行数据通信?(Visual C++编程 源代码)6.如何在两个执行程序间进行数据通信?(Visual C++编程 源代码)6.如何在两个执行程序间进行数据通信?(Visual C++编程 源代码)6.如何在两个执行...
单片机双机通信数码管演示程序 Proteus 仿真是一个非常有价值的课程设计,它能够帮助我们更好地理解单片机双机通信的原理和实现过程,并且能够应用于各种工业控制、机器人控制、自动化控制等领域。
描述中提到的"从零学驱动(二)驱动与应用层简单消息通信",意味着这是一个初学者教程,展示了如何设计一个简单的程序,使得sys文件(驱动程序)和exe文件(应用程序)能够相互发送和接收消息。 在Windows操作系统...
LVDS通信程序则涉及了LVDS接口的设计和实现,这通常包括硬件描述语言(如Verilog或VHDL)编写的数据发送和接收模块,以及嵌入式系统的驱动程序开发。在软件层面,驱动程序需要处理LVDS接口的初始化、数据收发、错误...
下面是一个简单的VB串口通信程序实例: ```vb Private Sub Form_Load() With MSComm1 .CommPort = 1 ' 设置串口号 .Settings = "9600,N,8,1" ' 设置串口参数 .RThreshold = 1 ' 设置接收缓冲区达到1个字符时...
DCDC电路控制程序及与上位机通信,boost控制电路及采样,485通信
三菱___(内有程序说明).zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例三菱___(内有程序说明).zip三菱PLC编程案例源码资料编程控制器应用通讯通信例子程序实例三菱___(内有程序说明).zip三菱PLC编程...
_FSK demodulator"表明这是一个关于FSK(频移键控)技术的压缩包文件,其中包含了FSK解调器的相关内容。描述指出这个程序专注于FSK的解调功能,可以帮助用户理解和实践FSK调制的基本原理。 FSK(频移键控)是一种...
此压缩包文件“wave propagation_大气通信_大气湍流仿真_光通信仿真_大气湍流_大气湍流多步仿真程序_源码.zip”显然包含了与这些主题相关的代码和可能的实验数据,旨在模拟和理解大气环境对光波传播和通信性能的实际...
在这个“UART.rar”压缩包中,包含了一个51单片机双机通信的程序,这对于我们理解51单片机如何通过UART进行双机通信非常有帮助。51单片机是经典的8位微处理器,广泛应用于各种嵌入式设计,因其指令集简单、资源适中...
6. **示例程序分析**:“PC串口通信程序设计A.vi”可能是一个完整的LabVIEW串口通信程序实例,包含了上述所有功能。通过打开和分析此VI,可以直观地理解串口通信的实现过程,学习如何布局前面板控件和连线,以及在...
3. **命名管道**:使用Kernel32库中的CreateNamedPipe和ConnectNamedPipe函数,用户层程序和驱动程序可以创建一个双向通信通道。这种方式提供了可靠的异步通信,适用于大量数据交换。 4. **文件系统流**:通过在...
java与PLC通信的实现代码,包含读和写
VB串口通信是Visual Basic编程中一个重要的技术领域,它允许程序通过串行端口与外部设备进行数据交互。在给定的“VB串口通信之串口接收程序.rar”压缩包中,包含了一个专门用于串口接收的VB源码示例。这个程序可能...
rs485_DSP28335”表明这是一个示例项目,专注于TI公司的TMS320F28335 DSP(数字信号处理器)与RS485接口之间的通信实现。这个示例可能是为初学者设计的,旨在帮助他们理解和应用这种通信方式。 描述中的“利用研旭...
标题中的"W5300_Drv.rar_DSP W5300_DSP 以太网_DSP W5300_W5300_w5300驱动程序"表明这是一个关于W5300以太网控制器的驱动程序,适用于DSP(数字信号处理器)环境,特别是TMS320F28335型号的DSP。W5300是一款常见的...
一个完整的串口通信程序通常包括打开和关闭串口、设置通信参数、读写数据、错误处理和中断处理等功能。压缩包中的源码可能覆盖了这些方面,为初学者提供了学习串口通信的实例。 通过研究这个压缩包,开发者不仅...
标题中的“wave propagation”指的是波传播,这在通信领域中是一个关键的概念,特别是对于无线通信和光学通信。波传播涉及到电磁波(如无线电波、微波和光波)如何在大气中传输,以及它们如何受到环境因素的影响,...