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

有关网络编程的问题
我初学java,最近看韩顺平的网络编程,有个问题,客户端的socket用static修饰,做成静态的,也就是不管有多少客户端登录,都共享一个socket,服务器端把每个与客户端建立的连接保存在hashmap中,转发的时候再找到对应的socket,但是客户端共享一个socket,在接收服务器发来的消息时是怎么区分的呢? 

------解决方案--------------------
我是用 打电话 来理解的。

1、每个客户端有个电话号码,打给服务器 ,告诉他你要找的 另一个 或多个 电话号码。
服务器帮你找到,并把你的消息告诉其他的电话号码。

2、这个电话机 可以抽象成一个socket  电话号码类似里面的Ip+端口
服务器就是电信公司。

3、电信公司只要维护一个电话号码的集合(socket ,clientID). 

4、电信公司等待客户拨过来,然后 按要求 接通被叫的客户端。