日期:2014-05-20  浏览次数:20772 次

java网络编程问题2
我最近刚学java,在看韩顺平讲java网络编程(项目是仿QQ)的时候,有个问题,他定义了客户端的静态socket,部分代码如下:
客户端:
public class QqClientConServer {
public static Socket s;
public boolean sendLoginInfoToServer(Object o)
{
.....
s=new Socket("127.0.0.1",9999);
}


服务端:
public class MyQqServer {
public MyQqServer()
{try {ServerSocket ss=new ServerSocket(9999);
while(true)
{Socket s=ss.accept();}
客户端在发送的时候:ObjectInputStream ois=new ObjectInputStream(QqClientConServer.s.getInputStream());每个用户发送和接收都是这个s。
但是我在测试的时候发现每个客户端都和服务器端对应个socket,客户端绝不是一个socket。
但它又是通过静态共享s发送和接受的,这是怎么回事呢?有高手能解释下吗?

------解决方案--------------------
起了两个客户端,就相当于启动了两个java虚拟机,实际上s是存在两个虚拟机中的静态变量,