首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

套接篇幅目不够

2012-07-29 
套接字数目不够聊天室开发遇到个技术问题服务器有有个通知线程如:有3个客户端a,b,c这个线程的功能就是通知

套接字数目不够
聊天室开发遇到个技术问题


服务器有有个通知线程

如:有3个客户端a,b,c


这个线程的功能就是通知a客户 , bc在线

 通知b客户,ac在线
c客户,ab在线。

 服务器维护着一个map

map<用户id,一个类>mymap

这个类的定义为:

class XX
{
public:
CClientSocket* psock;
用户id;

};

通知线程的设计是遍历这个map,

获取map中的类指针,最后获得psock.

获得后,我就无语了。

需要有一个套接字对 map管理的 客户端发送 在线用户表。

我不知道哪一个套接字去发送呢?

套接字就map管理的 和一个监听套接字。


[解决办法]
服务端主动推送,你4楼的描述是问题的,此外好像也没别的好方法。
这样客户端在收到的消息时需要区分是聊天记录还是在线列表,然后再做相应的处理,区分标识服务端和客户端定好就可以了。

再一种方式可以考虑使用udp方式来传递在线列表消息。
服务端启动指定端口如4567来向客户端发送在线列表的udp消息(sendto),客户端需要用另一个套接字来接收服务端4567端口发来的udp消息然后处理(recvfrom),但此方式需要维护一个客户端的ip列表,即map是用户id和客户ip的字典,与上面一种方式多大差别。

热点排行