Socket问题基本情况: 1,要建一个基于TCP连接的Server;
2,总共有40,000个Client,每一个Client都有唯一的身份ID及口令作为建立连接的身份校验;
3,每个Client都会10分钟左右向Server发送一次200字节的数据; 4,每个Client一旦与Server建立连接便始终保持连接,非意外情况不会断开; 5,这样,平均每秒有67个Client向Server发送数据,Server大部分的工作都是接收并简单处理数据; 6,偶尔,Server需要向特定的某个Client发送数据; 7,偶尔,Server需要向所有Client发送数据;硬件配置(低端服务器):
CPU至强2.8GHz
DDR 1G内存
IDE 80G硬盘求问:
1,这种情况是否使用多线程比较好? 2,若用多线程,Server如何根据Client的ID查找对应的连接并发送数据?好像线程池不支持这种做法,该怎样构建自己的线程管理器?100分先奉上,不够再开贴,希望达人指点~~
聊天室可是每个房间只允许200人在线啊
如果可以保持的话根本不用发送数据了,只要服务器查看连接是否畅通就行了
socketlist
{
int nCID; //该Client的身份ID;
String strClinetAddress;//记录下该Client信息;
int nClientPort;
}以此结构建立一个Arraylist.Server发送数据到特定ID的Client时,遍历检查Arraylist,找到nCID=ID的那个,取出地址和端口作为Send的参数。
-------------------------------------
这样就可以了吗?不必管它到底哪个线程在处理此事对吧?
-------------------------------------
2:你发送的时候,可以用sendto()方法,就可以根据记录的RemoteEndPoint来发送到指定的连接去。
这回清楚了吧。
----------------------------------------
自己写类包装Client,包括Client唯一的身份ID及口令