void Server::SendNewListToAllClients(const int& IDclient, char* buffer, std::string& tmpAllClientFiles) { int BytesSend = 0; int size = 0; int i = 0; std::lock_guard<std::mutex> guard(ClientMutex); for (i = 0; i < m_AllClients.size(); i++) { if (m_AllClients[i].IDSock != IDclient) { //std::lock_guard<std::mutex> guar(ClientMutex); SendCommandMsg(m_AllClients[i].cl_socket, SendNewListFromClient); SendCommandMsg(m_AllClients[i].cl_socket, IDclient); size = tmpAllClientFiles.size(); SendCommandMsg(m_AllClients[i].cl_socket, size); do { send(m_AllClients[i].cl_socket, (char *)&tmpAllClientFiles.c_str()[BytesSend], BUFFER_SIZE, 0);//отправка всего списка клиенту BytesSend += BUFFER_SIZE; size -= BUFFER_SIZE; } while (size > 0); BytesSend = 0; } } }
void Server::ClientToClinet(const SOCKET& ClientSock, char* buffer) { // std::lock_guard<std::mutex> guard(ClientMutex); int tmpID = 0, i; int index = 0; bool flagConnect = false; if (ReadMsg(ClientSock, tmpID, buffer)) { SendCommandMsg(ClientSock, TakeIP); std::lock_guard<std::mutex> guard(ClientMutex); for (i = 0; i < m_AllClients.size(); i++) { if (m_AllClients[i].IDSock == tmpID) { strcpy(buffer, inet_ntoa(m_AllClients[i].client_addr.sin_addr)); send(ClientSock, (char *)&buffer[0], BUFFER_SIZE, 0); memset(buffer, '\0', BUFFER_SIZE); flagConnect = true; break; } } if (!flagConnect) SendCommandMsg(ClientSock, Cancel); } }
void Server::SendIDDeleteToAllClient(const int& IDclient) { int i; std::lock_guard<std::mutex> guard(ClientMutex); for (i = 0; i < m_AllClients.size(); i++) { SendCommandMsg(m_AllClients[i].cl_socket, DeleteClient); SendCommandMsg(m_AllClients[i].cl_socket, IDclient); } }
void CDesktopDlg::OnBnClickedBtnShowDesktop() { DESKTOPINFO_C tagDesktopInfo; memset(&tagDesktopInfo, 0, sizeof(DESKTOPINFO_C)); tagDesktopInfo.nType = DESKTOP_ICON; tagDesktopInfo.bTag = false; //显示桌面 SendCommandMsg(tagDesktopInfo); }
void CDesktopDlg::OnBnClickedBtnShowTaskbar() { DESKTOPINFO_C tagDesktopInfo; memset(&tagDesktopInfo, 0, sizeof(DESKTOPINFO_C)); tagDesktopInfo.nType = TASKBAR; tagDesktopInfo.bTag = false; //显示任务栏 SendCommandMsg(tagDesktopInfo); }
void CDesktopDlg::OnBnClickedBtnAllowMouse() { // TODO: 在此添加控件通知处理程序代码 DESKTOPINFO_C tagDesktopInfo; memset(&tagDesktopInfo, 0, sizeof(DESKTOPINFO_C)); tagDesktopInfo.nType = MOUSE_MOVE; tagDesktopInfo.bTag = true; //允许鼠标移动 SendCommandMsg(tagDesktopInfo); }
//查看剪贴板内容 void CDesktopDlg::OnBnClickedBtnViewClip() { // TODO: 在此添加控件通知处理程序代码 DESKTOPINFO_C tagDesktopInfo; memset(&tagDesktopInfo, 0, sizeof(DESKTOPINFO_C)); tagDesktopInfo.nType = CLIPBOARD; tagDesktopInfo.bTag = true; SendCommandMsg(tagDesktopInfo); }
bool Server::GetListFromClient(const SOCKET& ClientSock, const int& IDclient, char* buffer, std::string& tmpAllClientFiles) { tmpAllClientFiles.clear(); bool flagConnect = false; int cm = 0; int size = 0; SendCommandMsg(ClientSock, SendListToServer); if (ReadMsg(ClientSock, cm, buffer)) { if (cm == Ok) { SendCommandMsg(ClientSock, Ok); if (ReadMsg(ClientSock, size, buffer)) { SendCommandMsg(ClientSock, Ok); flagConnect = true; tmpAllClientFiles = std::to_string(IDclient); tmpAllClientFiles += ':'; do { if (recv(ClientSock, (char *)&buffer[0], BUFFER_SIZE, 0) != SOCKET_ERROR) { tmpAllClientFiles += buffer; size -= BUFFER_SIZE; memset(buffer, '\0', BUFFER_SIZE); } else { flagConnect = false; break; } } while (size > 0); memset(buffer, '\0', BUFFER_SIZE); if (flagConnect) { std::cout << tmpAllClientFiles << "\n"; WriteInfoFromClient(IDclient, tmpAllClientFiles);//записываем информацию от клиента в вектор данных сервера return true; } } } } return false; }
void Server::SendListToCLient(const SOCKET& ClientSock, const int& IDclient, char* buffer) { std::string tmpAllClientFiles = ""; int cm = 0, i = 0; int size = 0; int BytesSend = 0; GetAllList(tmpAllClientFiles, IDclient); if (tmpAllClientFiles.size() > 0) { SendCommandMsg(ClientSock, SetListClients); if (ReadMsg(ClientSock, cm, buffer)) { if (cm == Ok) { size = tmpAllClientFiles.size(); //Send size of allFiles list SendCommandMsg(ClientSock, size); if (ReadMsg(ClientSock, cm, buffer)) { if (cm == Ok) { do { strcpy(buffer, tmpAllClientFiles.c_str()); send(ClientSock, (char *)&buffer[0], BUFFER_SIZE, 0); //отправка всего списка клиенту //send(ClientSock, (char *)&tmpAllClientFiles.c_str()[BytesSend], BUFFER_SIZE, 0); BytesSend += BUFFER_SIZE; size -= BUFFER_SIZE; } while (size > 0); memset(buffer, '\0', BUFFER_SIZE); } } } } } }
void Server::GetNewListFromClient(const SOCKET& ClientSock, int& IDclient, char* buffer, std::string& tmpAllClientFiles, bool flagConnect) { tmpAllClientFiles.clear(); int cm = 0; int size = 0; SendCommandMsg(ClientSock, GetNewList); if (ReadMsg(ClientSock, cm, buffer)) { if (cm == Ok) { if (GetListFromClient(ClientSock, IDclient, buffer, tmpAllClientFiles)) flagConnect = true; } SendNewListToAllClients(IDclient, buffer, tmpAllClientFiles); } }