uidab:不应该啊,估计你还是用的有问题。贴代码吧
(2016-12-29 08:14) 
mythread = new FileTransmit_Thread();
mythread->for_threaduse_IP = m_strIP;
mythread->for_threaduse_cmd = FILE_PACKAGE;
mythread->for_threaduse_dic = m_strFileName;
mythread->start();
这里开启进程,下面是run里的代码
FILE * fd;
int length;
unsigned int crc32 = 0;
int finish[2];
int i = 0;
char * f_char;
char * filename;
file_tcpSocket = new QTcpSocket();
file_tcpSocket->connectToHost(for_threaduse_IP, SERVPORT_FILE);
QByteArray ba = for_threaduse_dic.toLatin1();
filename = ba.data();
qDebug()<<filename;
QFile Qfile(for_threaduse_dic);
if (!Qfile.open(QIODevice::ReadOnly))
{
return;
}
fd = fopen(filename,"rb");
if(fd == NULL)
{
printf("open the file %s failed\n",filename);
}
while((length = fread(file_command.buf,1,MAXDATASIZE, fd))>0)
{
file_command.cmd = for_threaduse_cmd;
file_command.buf_len = length;
cmd_send_2(&file_command);
status_recv_2(&file_fback);
if(file_fback.status == WORK_NORMAL)
{
qDebug()<<QString("%1 send %2 bytes\n").arg(i++).arg(length);
}
crc32 = ssh_crc32_s(file_command.buf,length,crc32);
}
finish[0] = FINISH_MARK;
finish[1] = crc32;
qDebug()<<QString("crc32 = %1\n").arg(crc32);
f_char = (char * ) finish;
for(i=0;i<sizeof(int)*2;i++)
file_command.buf
= f_char;
file_command.buf_len = sizeof(int)*2;
cmd_send_2(&file_command);
fclose(fd);
status_recv_2(&file_fback);
if(file_fback.status)
{
qDebug()<<"the file is sending success\n";
}
file_tcpSocket->disconnectFromHost();
delete(file_tcpSocket);