我有一个简单的服务器客户端winsock程序正在运行。并想知道并添加两件事。
如何标记/标识客户?
能够在病房后发送所有客户数据吗?
这是我目前的连接循环。 “client_id [a]”是我试图标记/标识客户端但可能不正确的内容。
for(;;)
{
if(Connect = accept(Listen, (SOCKADDR*)&Server, &size))
{
std::cout<<"\nConnection was reached";
a = a +1;
client_id[a] = accept(Listen, (SOCKADDR*)&Server, &size) ???
}
}
使用C / C ++和windows。
希望有人可以帮我解决这个问题。
感谢。
答案 0 :(得分:0)
连接到服务器的每个客户端都有自己的标识符SOCKET。不要使用您的自定义标识符。也使用动态数组 - &gt; std :: vector或map以保持您的客户。
此外,你有双重接受,你将失去每一秒连接。
std::vector< SOCKET > clients;
...
for(;;)
{
if(Connect = accept(Listen, (SOCKADDR*)&Server, &size))
{
std::cout<<"\nConnection was reached";
clients.push_back( Connect )
}
}
如果是地图,您可以使用
std::map< SOCKET, YouClientClass > clients;
...
for(;;)
{
if(Connect = accept(Listen, (SOCKADDR*)&Server, &size))
{
std::cout<<"\nConnection was reached";
clients.insert( std::make_pair( Connect, YourClientClass(Connect)));
}
}