do{
/// send msgs
cout << "Client: ";
cin.getline(clientMSG, 1024, '\n');
if(strcmp(clientMSG, "quit") == 0){
StringSource msgEncryptor(clientMSG, true, new StreamTransformationFilter(encrypt, new StringSink(encryptMSG)));
StringSource encryptEncode(encryptMSG, true, new HexEncoder(new StringSink(encodeMSG)));
memset(clientSEND, '\0', 3000);
copy(encodeMSG.begin(), encodeMSG.end(), clientSEND);
send(sock, clientSEND, strlen(clientSEND), 0);
break;
}
StringSource msgEncryptor(clientMSG, true, new StreamTransformationFilter(encrypt, new StringSink(encryptMSG)));
StringSource encryptEncode(encryptMSG, true, new HexEncoder(new StringSink(encodeMSG)));
memset(clientSEND, '\0', 3000);
copy(encodeMSG.begin(), encodeMSG.end(), clientSEND);
send(sock, clientSEND, strlen(clientSEND), 0);
/** ------------------------------------------------ **/
/// receive msgs
memset(clientRECV, '\0', 3000);
valread = read(sock, clientRECV, 3000);
StringSource encryptDecode(clientRECV, true, new HexDecoder(new StringSink(decodeMSG)));
StringSource msgDecryptor(decodeMSG, true, new StreamTransformationFilter(decrypt, new StringSink(decryptMSG)));
cout << "Server: " << decryptMSG << endl;
}while(1);
Выше находится клиентская программа
do{
/// receive msgs
memset(serverRECV, '\0', 3000);
valread = read(new_socket, serverRECV, 3000);
StringSource encryptDecode(serverRECV, true, new HexDecoder(new StringSink(decodeMSG)));
StringSource msgDecryptor(decodeMSG, true, new StreamTransformationFilter(decrypt, new StringSink(decryptMSG)));
if(decryptMSG == "quit"){
cout << "Client disconnected!" << endl;
break;
}
cout << "Client: " << decryptMSG << endl;
/** ------------------------------------------------------------------------ **/
/// send msgs
cout << "Server: ";
cin.getline(serverMSG, 1024, '\n');
if(strcmp(serverMSG, "quit") == 0){
StringSource msgEncryptor(serverMSG, true, new StreamTransformationFilter(encrypt, new StringSink(encryptMSG)));
StringSource encryptEncode(encryptMSG, true, new HexEncoder(new StringSink(encodeMSG)));
memset(serverSEND, '\0', 3000);
copy(encodeMSG.begin(), encodeMSG.end(), serverSEND);
send(new_socket, serverSEND, strlen(serverSEND), 0);
break;
}
StringSource msgEncryptor(serverMSG, true, new StreamTransformationFilter(encrypt, new StringSink(encryptMSG)));
StringSource encryptEncode(encryptMSG, true, new HexEncoder(new StringSink(encodeMSG)));
memset(serverSEND, '\0', 3000);
copy(encodeMSG.begin(), encodeMSG.end(), serverSEND);
send(new_socket, serverSEND, strlen(serverSEND), 0);
cin.clear();
memset(serverMSG, '\0', 3000);
}while(1);
, это сервер.
Я пытаюсь закодировать какую-нибудь программу сокетов, и я внезапно столкнулся с этой проблемой, когда когдаклиент отправляет сообщение, сервер не отображает его, пока я не принудительно завершу программу.
Программа должна начинаться с того, что клиент вводит сообщение, затем шифрует сообщение и отправляет его на сервер.Затем сервер расшифрует его и отобразит сообщение.Но я не понимаю, почему оно не отображает сообщение, только когда я заканчиваю программу, которое оно отображает ...
Использую ли я неправильный способ отправки / чтения?Я почти уверен, что это не проблема шифрования / дешифрования, потому что я вижу сообщение на стороне сервера, когда заканчиваю программу на стороне клиента.