我想澄清有关网络 OOP 的问题。例如,使用客户端-服务器模型,就像信使一样,您有两个程序。当客户端程序运行时,它的一个对象被实例化。一个Socket
然后在客户端程序内实例化并连接到服务器程序 ServerSocket
使用ServerSocket
的accept()
方法。根据创建新的 Socket
的文档服务器程序内部。根据我的经验,Java 中使用“创建”一词时,它指的是一个对象,因此现在一个客户端有两个对象 Socket
?一个在客户端程序上,一个在服务器上?是否可以从服务器程序实例化客户端程序中的对象,或者反之亦然?
最后,如果我使用static
修改器创建我的 Socket
在客户端程序中,通常只允许创建它的一个对象,因此如果 Socket
关于Socket
在客户端程序中通常是不一样的Socket
如在服务器程序中,引用创建的对象,现在两个程序之间是否仅共享一个对象?
为了清楚起见,我不是在谈论多个客户端连接,我只是想了解客户端 Socket
的基 native 制。连接到服务器的ServerSocket
以及弄清楚通过这种联系我能做什么和不能做什么,但一旦我理解了它,我就可以在自己的时间进行实验。
我希望我没有想太多。预先感谢您的帮助:-)。
最佳答案
首先,你的问题与Java EE没有任何关系。套接字是 Java SE 的一部分。
你也不明白static
是什么意思。 static
将变量的作用域限定为类,而不是将其限定为类的实例。它不限制创建的对象的数量。每个 JVM 都有自己的对象和类,它们不与网络上的任何其他 JVM 共享。将对象存储到客户端 JVM 中 A 类的静态变量 foo
中不会对服务器上 A.foo
中存储的内容产生任何影响。
我不明白你为什么如此关心创建的套接字对象的数量。套接字就是:两方之间通信的端点。每一方都有自己的端点,连接到另一方的端点。有点像你给 friend 打电话:你用一部手机,你的 friend 也用一部,两部手机互相连接。
关于JavaEE面向对象网络,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14009189/