服务端怎么保存多个客户端连接socket信息 就是服务端要管理客户端的socket保存socket的ip和端口等然后服务端根据不同socket给不同 客户端的发送不同的信息怎么保存呀?链表? 如果有例子,最好给出例出说明!谢谢了 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 stl::list或者MFC的CList,CArray都可以 struct peerinfo{ SOCKET sock, std::string ip, unsigned int port,}PEERINFO;std::list<PEERINFO&> m_peerlist; #include <list>struct peerinfo { SOCKET sock; std::string ip; unsigned int port;}PEERINFO; std ::list <PEERINFO&> m_peerlist; 编译出现错误:error C2059: syntax error : '>' 投链表一票,mfc就用coblist。windows编程就#include <list>.然后就list<socket>。用链表主要是连接用户的断开时间和顺序是不一定的。 我已用这个方法了 现在能保存socket了,可问题又来了比如三个客户端 A B C发送数据分别为DataA ,DataB ,DataC到服务端现在服务端要把三个数据发到三个客户端上个机器上,也说是每个客户端要知道其它两个客户端的数据这个是不是要,在客户端发过来的数据包头要加以区分呀?这个具体怎么做呀? 不需要加包头啦,你不是记录了socket在链表或者队列或者数组里面嘛,你每一个单独的Socket发送的消息在你服务端接收到后你是知道了,你可以把链表打开,依次循环取出非本次发送效果过来的Socket挨着转发一次消息就OK了 加数据包头并不是为了区分是哪个用户发送数据过来的,而是对发送过来的数据进行一种封装的协议[自定义的],事实上哪个客户发信息过来,对应的套接字就会有响应,所以应该在struct peerinfo { SOCKET sock, std::string ip, unsigned int port, }PEERINFO; 这里加个信息ID,表明当前发送数据过来的是哪个用户. 我加了个ID了struct peerinfo { SOCKET sock, std::string ip, unsigned int port, in ID; }PEERINFO;这个ID是可以区分套节字但加了还是不能对客户发来的数据加以区分,服务端接收了很多客户端数据,如果不可以区分的话,怎么知道这个是哪发来的,那个数据是谁发来的?不然的话就很乱!服务端要发送DataB 和DataC到客户端A去我现在想的办法是:用发过来的数据和套节字ID进行关联,意思是说接收的数据也要用那个ID加以区分,就是数据和套节字进行绑定的意思吧不知道这个怎么实现! 这个方法不错,可实现起来有点难,今天还只学会把套节字加入链表,对list不熟悉。struct peerinfo { SOCKET sock, std::string ip, unsigned int port, in ID; }PEERINFO; std ::list <PEERINFO> m_Socketlist; PEERINFO p; p.sock=sokcet; m_Socketlist.push_back (p);我现在只加了一个sokcet,我在别的地方再放一个ID进去p.ID=1进去,就是要socket 和ID对应起来 要实现这样的效果 std ::list <PEERINFO> m_Socketlist; PEERINFO p; p.sock=sokcet; p.ID=1; m_Socketlist.push_back (p); 最好用 vector<SOCKET> ;。呵呵。 弄个数组啊 用来保存socket的 用数据或者链表来保存客户端的SOCKET我知道,可是,如果客户端中有一个掉线,那我怎么办呢,我是不是要在链表中找到这个SOCKET,然后删除它呢,那我怎么确定是哪个SOCKET呢,并且怎么找到它呢? 关于mf中cstring的问题! 求教:wxMBConv是什么? 如何通过窗口名称获得窗口句柄 批处理中,2KServer系统上找不到Choice函数,但我要用这个函数,有好办法吗? 各位大虾帮忙,小弟请教一个 dll 的菜鸟级问题。。 关于获取时间 如果出现这种情况,你会考虑离开公司吗? 系统为什么自动把我的焦点给弄走了?在线等待! 征集索引数据的解决方案 请问:文本的列表排序listctrl,能用回调函数callback实现吗??? 为什么2010里添加类成员变量种类那么少? 对话框做悬浮窗时的大小改变问题
{
SOCKET sock,
std::string ip,
unsigned int port,
}PEERINFO;std::list<PEERINFO&> m_peerlist;
{
SOCKET sock;
std::string ip;
unsigned int port;
}PEERINFO; std ::list <PEERINFO&> m_peerlist; 编译出现错误:error C2059: syntax error : '>'
用链表主要是连接用户的断开时间和顺序是不一定的。
我已用这个方法了 现在能保存socket了,可问题又来了比如三个客户端 A B C发送数据分别为DataA ,DataB ,DataC到服务端现在服务端要把三个数据发到三个客户端上个机器上,也说是每个客户端要知道其它两个客户端的数据
这个是不是要,在客户端发过来的数据包头要加以区分呀?这个具体怎么做呀?
封装的协议[自定义的],事实上哪个客户发信息过来,对应的套接字就会有响应,所以
应该在struct peerinfo
{
SOCKET sock,
std::string ip,
unsigned int port,
}PEERINFO;
这里加个信息ID,表明当前发送数据过来的是哪个用户.
我加了个ID了
struct peerinfo
{
SOCKET sock,
std::string ip,
unsigned int port,
in ID;
}PEERINFO;这个ID是可以区分套节字
但加了还是不能对客户发来的数据加以区分,服务端接收了很多客户端数据,如果不可以区分的话,怎么知道这个是哪发来的,那个数据是谁发来的?不然的话就很乱!
服务端要发送DataB 和DataC到客户端A去
我现在想的办法是:用发过来的数据和套节字ID进行关联,意思是说接收的数据也要用那个ID加以区分,就是数据和套节字进行绑定的意思吧
不知道这个怎么实现!
这个方法不错,可实现起来有点难,今天还只学会把套节字加入链表,对list不熟悉。struct peerinfo
{
SOCKET sock,
std::string ip,
unsigned int port,
in ID;
}PEERINFO;
std ::list <PEERINFO> m_Socketlist;
PEERINFO p;
p.sock=sokcet;
m_Socketlist.push_back (p);我现在只加了一个sokcet,我在别的地方再放一个ID进去p.ID=1进去,就是要socket 和ID对应起来
要实现这样的效果
std ::list <PEERINFO> m_Socketlist;
PEERINFO p;
p.sock=sokcet;
p.ID=1;
m_Socketlist.push_back (p);