【发布时间】:2014-06-27 22:45:28
【问题描述】:
我正在尝试将 cryptopp 与 QTcpSocket 一起使用,我所做的是在客户端加密用户名,通过 TCPSocket 发送,然后在服务器端解密。这是我的问题,QTcpSocket 没有读取所有消息,如您所见,服务器端我希望为一个密码接收多个数据包,读取方法说整个消息已被读取,但在我的 char* 中,我没有看到真的……这是我发送密码的代码:
char size[5];
sprintf(size,"%d{",crypted_mess.size());
int written = 0;
written = socket->write(size);
written = socket->write(crypted_mess.c_str(),crypted_mess.size()+ 1);
socket->waitForBytesWritten(crypted_mess.size());
string recovered = T.discryptor(crypted_mess) ;
和我的代码来解密它(在不发送消息的情况下在客户端正常工作):
if(paquet_missing_size == 0) {
current_message->clear();
was_read = socket->read(start_message,1000);
int message_start = 0;
while(start_message[message_start]!= '{')
message_start++;
char *size_total_string;
size_total_string = (char*)malloc (message_start * sizeof (char));
for(int j = 0 ;j < message_start;j++ ){
size_total_string[j] = start_message[j];
}
size_total_string[message_start] = '\0' ;
paquet_missing_size = atoi(size_total_string);
memcpy(read,start_message+message_start+1,was_read - message_start);
}
else
was_read = socket->read(read,1000);
// add the read thing to the current_message
if(was_read <= paquet_missing_size) {
current_message->append(read, was_read);
paquet_missing_size -= was_read;
} else {
current_message->append(read, paquet_missing_size);
paquet_missing_size = 0;
}
【问题讨论】:
标签: qt sockets encryption