16,471
社区成员
发帖
与我相关
我的任务
分享
void CMR_clientDlg::OnBnClickedFile()
{
CFileDialog dlg(TRUE);
CFile file;
CString file_path = "";
CString file_name = "";
ULONGLONG file_size = 0;
ULONGLONG endp = 0;
ULONGLONG total = 0;
UINT ret = 0;
int length = 0;
char info[1024] = {0};
char date[64 * 1024] = {0};
CString message = "";
if(dlg.DoModal() != TRUE)
{
return ;
}
file_path = dlg.GetPathName();
file_name = dlg.GetFileName();
if(file.Open(file_path, CFile::modeRead) == FALSE)
{
AfxMessageBox(_T("打开文件失败!"));
return ;
}
file_size = file.GetLength();
sprintf(info, "%llu%s", file_size, file_name.GetBuffer());
length = strlen(info);
info[length] = 'F';
info[length+1] = 'I';
info[length+2] = 'L';
info[length+3] = 'E';
length = strlen(info);
endp = file.SeekToEnd();
while(file.GetPosition() <= endp)
{
memset(date, 0, sizeof(date));
strncpy(date,info, length);
file.Read(date + length, file_size); // 这里为什么读不到文件数据???? 假如一个几十字节的文件
AfxMessageBox(date);
Sleep(100);
}
if(total == file_size)
{
message.Format(_T("文件名:%s\r\n文件大小:%d\r\n发送成功!"), file_name.GetBuffer(),file_size);
GetDlgItem(IDC_COMMOM_INFO)->SetWindowTextA(info);
}
}
str_mrdata.Format(_T("Reflex ip: %s\r\nReflex port: %d"),refex_addr, ntohs(pdata->refex_port));
GetDlgItem(IDC_MR_INFO)->SetWindowText(str_mrdata);
m_Connect_Type.InsertString(0, "TCP连接");
m_Connect_Type.InsertString(1, "UDP连接");
m_Connect_Type.SetCurSel(0);