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

关于Socket和ServerSocket
现在有两个疑问:1.一个服务器端口只能接一个客户端吗?
                2.一个服务端怎么同时向不同客户端发送消息?

------解决方案--------------------
不是呀  一个服务器端口可以有多个客户端访问   第二个问题  就要看你发送数据的协议是怎么制定的了
------解决方案--------------------
你这两个问题可以说是同一个问题,一个服务端可以向多个客服端发送数据 ,只要客服端 指点发送的ip地址和端口 是服务端的ip地址和其监听端口就行
------解决方案--------------------
其实这个的原理可以用移动公司或者联通公司的职能来解释

用户是客户端
公司是服务端
客服是服务端根据客户端访问创建的,会记录访问它的客户端信息 ,保持通信

你想想你给客户打电话就知道了 随机分配的 每一次的客服 可能都不一样

基本原理就是这个样子!!!

------解决方案--------------------
1.一个服务器端口只能接一个客户端吗?
   不是,能同时接入多个客户端;

2、一个服务端怎么同时向不同客户端发送消息?
   利用多线程

3、给出段小代码,一般写Socket程序是以这样的形式:
Socket client = null;
   while(true){
     client = server.accept();
     ...

这段代码里有两个基本概念LZ要搞清楚
    1、server.accept(); 这里是阻塞的,也就是说在server端没接收到任何client时是在这一直等待的。
    2、Socket client 这只是声明了一个变量,说白点就是一个指向一个地址的标签。当再次
client = server.accept();的时候,client 又指向了新地址。

如果LZ想一个服务端同时向不同客户端发送消息,那LZ起码要了解一下多线程、IO。
其实Socket的例子网上很多,建议谷歌和百度