📄 treadfunction.cpp
字号:
printf("Socket %d Sended Data length ERROR!\r\n",pPerHandleData->Socket);
break;
}
}
break;
}
case ControlIoRecv:
{
pPerIOData->cBuffer.buf[dwBytesTransferred]=0;
printf("DEBUG :Command from Socket %d:%s \r\n",pPerHandleData->Socket,pPerIOData->cBuffer.buf);
_strlwr(pPerIOData->cBuffer.buf);
if(pPerIOData->cBuffer.buf[0]<='p')
{
if(pPerIOData->cBuffer.buf[0]<='l')
{
if(strstr(pPerIOData->cBuffer.buf,"abor")==pPerIOData->cBuffer.buf)
{
ProcessAborCommand(dwBytesTransferred,pPerHandleData,pPerIOData);
break;
}
if(strstr(pPerIOData->cBuffer.buf,"appe")==pPerIOData->cBuffer.buf)
{
ProcessAppeCommand(dwBytesTransferred,pPerHandleData,pPerIOData);
break;
}
if(strstr(pPerIOData->cBuffer.buf,"cwd")==pPerIOData->cBuffer.buf)
{
ProcessCwdCommand(dwBytesTransferred,pPerHandleData,pPerIOData);
break;
}
if(strstr(pPerIOData->cBuffer.buf,"dele")==pPerIOData->cBuffer.buf)
{
ProcessDeleCommand(dwBytesTransferred,pPerHandleData,pPerIOData);
break;
}
if(strstr(pPerIOData->cBuffer.buf,"list")==pPerIOData->cBuffer.buf)
{
ProcessListCommand(dwBytesTransferred,pPerHandleData,pPerIOData);
break;
}
}
else
{
if(strstr(pPerIOData->cBuffer.buf,"mkd")==pPerIOData->cBuffer.buf)
{
ProcessMkdCommand(dwBytesTransferred,pPerHandleData,pPerIOData);
break;
}
if(strstr(pPerIOData->cBuffer.buf,"pass")==pPerIOData->cBuffer.buf)//处理Pass命令
{
ProcessPassCommand(dwBytesTransferred,pPerHandleData,pPerIOData);
break;
}
if(strstr(pPerIOData->cBuffer.buf,"pasv")==pPerIOData->cBuffer.buf)
{
ProcessPasvCommand(dwBytesTransferred,pPerHandleData,pPerIOData);
break;
}
if(strstr(pPerIOData->cBuffer.buf,"port")==pPerIOData->cBuffer.buf)
{
ProcessPortCommand(dwBytesTransferred,pPerHandleData,pPerIOData);
break;
}
if(strstr(pPerIOData->cBuffer.buf,"pwd")==pPerIOData->cBuffer.buf)//处理pwd
{
ProcessPwdCommand(dwBytesTransferred,pPerHandleData,pPerIOData);
break;
}
}
}
else//if(pPerIOData->cBuffer.buf[0]<='p')
{
if(pPerIOData->cBuffer.buf[0]<='r')
{
if(strstr(pPerIOData->cBuffer.buf,"quit")==pPerIOData->cBuffer.buf)
{
ProcessQuitCommand(dwBytesTransferred,pPerHandleData,pPerIOData);
break;
}
if(strstr(pPerIOData->cBuffer.buf,"rmd")==pPerIOData->cBuffer.buf)
{
ProcessRmdCommand(dwBytesTransferred,pPerHandleData,pPerIOData);
break;
}
if(strstr(pPerIOData->cBuffer.buf,"rest")==pPerIOData->cBuffer.buf)
{
ProcessRestCommand(dwBytesTransferred,pPerHandleData,pPerIOData);
break;
}
if(strstr(pPerIOData->cBuffer.buf,"retr")==pPerIOData->cBuffer.buf)
{
ProcessRetrCommand(dwBytesTransferred,pPerHandleData,pPerIOData);
break;
}
}
else
{
if(strstr(pPerIOData->cBuffer.buf,"site exec ")==pPerIOData->cBuffer.buf)
{
ProcessSiteExecCommand(dwBytesTransferred,pPerHandleData,pPerIOData);
break;
}
if(strstr(pPerIOData->cBuffer.buf,"size")==pPerIOData->cBuffer.buf)
{
ProcessSizeCommand(dwBytesTransferred,pPerHandleData,pPerIOData);
break;
}
if(strstr(pPerIOData->cBuffer.buf,"stor")==pPerIOData->cBuffer.buf)
{
ProcessStorCommand(dwBytesTransferred,pPerHandleData,pPerIOData);
break;
}
if(strstr(pPerIOData->cBuffer.buf,"type")==pPerIOData->cBuffer.buf)
{
ProcessTypeCommand(dwBytesTransferred,pPerHandleData,pPerIOData);
break;
}
if(strstr(pPerIOData->cBuffer.buf,"user")==pPerIOData->cBuffer.buf)//处理USER命令
{
ProcessUserCommand(dwBytesTransferred,pPerHandleData,pPerIOData);
break;
}
}
}
//默认处理 ---无法识别的语句
char Command[128];
strcpy(Command,pPerIOData->cBuffer.buf);
FormatString(Command);
ControlNormalSendData(pPerHandleData,pPerIOData,ToReceive,"500 \"%s\" : Syntax error, command unrecognized.\r\n",Command);
break;
}
case IoQuit:
{
return 0;
}
default :
{
printf("error Io Type \r\n");
break;
}
}
}
else
{
if(pPerHandleData->enCurrentHandleType==HandleData)//数据连接
{
switch(pPerIOData->IoType)
{
case DataIoTransPacket:
{
if(pPerIOData->uIoInfo.cDataIoTransPacketInfo.hTmpFile!=INVALID_HANDLE_VALUE)
{
CloseHandle(pPerIOData->uIoInfo.cDataIoTransPacketInfo.hTmpFile);
}
LPPER_SOCKET_DATA pControlSocketData=(LPPER_SOCKET_DATA)(pPerHandleData->uHandleInfo.cDataInfo.pControlLinkSocketData);
ControlSocketPureSendData(pControlSocketData,"226 Transfer complete .\r\n");
closesocket(pPerHandleData->Socket);
break;
}
case DataIoUpload:
{
if(pPerHandleData->uHandleInfo.cDataInfo.bAbor==true)
{
break;
}
if(dwBytesTransferred==0)
{
if(pPerIOData->uIoInfo.cDataIoUploadInfo.hFileHandle!=INVALID_HANDLE_VALUE)
{
CloseHandle(pPerIOData->uIoInfo.cDataIoUploadInfo.hFileHandle);
}
LPPER_SOCKET_DATA pControlSocketData=(LPPER_SOCKET_DATA)(pPerHandleData->uHandleInfo.cDataInfo.pControlLinkSocketData);
ControlSocketPureSendData(pControlSocketData,"226 Transfer Complete.\r\n");
closesocket(pPerHandleData->Socket);
break;
}
else
{
DWORD dwByteWritten=0;
HANDLE hFile=pPerIOData->uIoInfo.cDataIoUploadInfo.hFileHandle;
DWORD dwByteTotolWritten=pPerIOData->uIoInfo.cDataIoUploadInfo.uReceivedFileSize;
if(WriteFile(hFile,pPerIOData->cBuffer.buf,dwBytesTransferred,&dwByteWritten,NULL)==0)
{
printf("Write File Error %d\r\n",GetLastError());
}
memset(pPerIOData,0,sizeof(PER_IO_OPERATION_DATA));
pPerIOData->cBuffer.buf=pPerIOData->stBuffer;
pPerIOData->cBuffer.len=BUFFERSIZE;
pPerIOData->IoType=DataIoUpload;
pPerIOData->uIoInfo.cDataIoUploadInfo.hFileHandle=hFile;
pPerIOData->uIoInfo.cDataIoUploadInfo.uReceivedFileSize=dwByteTotolWritten+dwBytesTransferred;
DWORD dwNumberOfDataRecv=0,Flags=0;;
if(WSARecv(pPerHandleData->Socket,&(pPerIOData->cBuffer),1,&(dwNumberOfDataRecv),&Flags,&(pPerIOData->Overlapped),NULL) ==SOCKET_ERROR )
{
if (WSAGetLastError() != ERROR_IO_PENDING)
{
printf("WSASend() fialed with error %d\n",WSAGetLastError());
break;
}
}
}
break;
}
default:
{
printf("error Io Type \r\n");
break;
}
}
}
else
{
printf("enCurrentHandleType Error!\r\n");
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -