void MainWindow::on_connectOutgoing_clicked() { if (ClientSendSetup(ui->ipAddr->text().toLatin1().data()) == 0) { ui->connectOutgoing->setEnabled(false); ui->ipAddr->setEnabled(false); ui->disconnectOutgoing->setEnabled(true); ui->sendBtn->setEnabled(true); } }
DWORD WINAPI ClientControlThreadSend(LPVOID lpParameter) { char *sendbuff = (char *)calloc(CONTROL_PACKET_SIZE + 1, sizeof(char)); char *recvbuff = (char *)calloc(CONTROL_PACKET_SIZE + 1, sizeof(char)); char *message = (char *)calloc(CONTROL_PACKET_SIZE + 1, sizeof(char)); int flag = (int)lpParameter; int sentb = 0, recvb = 1, totalb = 0, i = 0; wchar_t path[260]; switch (flag) { case GET_UPDATE_SONG_LIST: memset(recvbuff, 0, sizeof(recvbuff)); memset(message, 0, sizeof(message)); sendbuff[0] = flag; sentb = send(controlSock, sendbuff, CONTROL_PACKET_SIZE, 0); numSongs = 0; songRequestDone = 0; while(recvb != SOCKET_ERROR) { recvb = recv(controlSock, recvbuff, CONTROL_PACKET_SIZE, 0); strcat(message, recvbuff); totalb += recvb; if (totalb >= CONTROL_PACKET_SIZE) { if (message[0] == 0) { break; } songList[i] = new char[100]; strcpy(songList[i], message); i++; numSongs++; totalb -= CONTROL_PACKET_SIZE; memset(message, 0, sizeof(message)); } } songRequestDone = 1; break; case SEND_SONG_TO_SERVER: sendbuff[0] = flag; strcat(sendbuff, sendFileName); sentb = send(controlSock, sendbuff, CONTROL_PACKET_SIZE, 0); while(totalb < CONTROL_PACKET_SIZE && recvb != SOCKET_ERROR) { recvb = recv(controlSock, recvbuff, CONTROL_PACKET_SIZE, 0); totalb += recvb; } if (recvbuff[0] == 0) { sendSockClosed = ClientSendSetup(address, sendSock, SERVER_DEFAULT_PORT); ClientSend(hSendFile); } break; case GET_SONG_FROM_SERVER: sendbuff[0] = flag; strcat(sendbuff, recvFileName); mbstowcs(&path[0], recvFileName, strlen(recvFileName)); qDebug() << recvFileName; qDebug() << QString::fromWCharArray(path); DeleteFile(path); hReceiveFile = CreateFile(path, GENERIC_WRITE, 0, NULL, CREATE_NEW, FILE_ATTRIBUTE_NORMAL, NULL); ShowLastErr(false); hReceiveClosed = 1; ClientReceiveSetup(listenSock, CLIENT_DEFAULT_PORT, acceptEvent); ClientListen(); sentb = send(controlSock, sendbuff, CONTROL_PACKET_SIZE, 0); break; default: qDebug() << "Invalid request"; break; } free(sendbuff); free(recvbuff); free(message); return TRUE; }