我正在开发一个服务器并且给出了客户端。 它是一个共享文档,每次只有一个可以写入文件。 每隔10秒,我想“刷新”所有客户, 所以所有的客户都会看到可以写的客户写的是什么。 我的代码可以使用2个客户端,但是如果我再添加1个,那么就可以了。
这是我的代码:
void Server::addNewClient(SOCKET sc)
{
//get the client's name
std::string name = Helper::getUsername(sc);
//new thread
std::thread newClient(&Server::connection, this, sc, name);
//get next writer
next = clientDeque.size() > 1 ? clientDeque[1] : "no next";
//send Message 101
Helper::sendUpdateMessage(sc, fileContent, clientDeque[0], next, getPosition(name));
newClient.detach();
}
连接功能:
while (code != 208)
{
//read only
while (name != clientDeque[0])
{
writeToServer(sc, name);
}
//""" same more code"""
readFromServer(sc, name, code);
writeToServerfunction:
void Server::writeToServer(SOCKET sc, std::string name)
{
cond.wait(_lock);
try {
Helper::sendUpdateMessage(sc, fileContent, clientDeque[0], next, getPosition(name));
}
catch (std::exception& ex)
{
std::cout << ex.what() << std::endl;
}
}
在readFromServer函数中我有
cond.notify_all();
我做错了什么?