|
//发送文本
void CTCPIPDlg::OnSendtest()
{
DWORD actlen, cnt = 0;
int nErrorCode;
if (m_Socket == NULL)
return;
char *pcharbuff = new char[320*240*2];
DWORD filelen = GetFileSize(hFile, NULL);// 获取文件大小
if (filelen == 0xFFFFFFFF)
{
MessageBox(_T("获取文件大小失败!"));
return;
}
BOOL ret = SetFilePointer(hFile, 0, NULL, FILE_BEGIN); // 移动文件指针到文件
if (ret == 0xFFFFFFFF)
{
MessageBox(_T("移动文件指针到开头失败!"));
return;
}
for(DWORD i=0; i<(filelen/(320*240*2)); i++)
{
ret = ReadFile(hFile, pcharbuff, 320*240*2, &actlen, NULL); // 从文件中读出数据
if(!ret)MessageBox(_T("读文件失败!"));
while(cnt <320*240*2)
{
actlen = send(m_Socket, pcharbuff + cnt, 320*240*2 - cnt, 0);
if (actlen == SOCKET_ERROR )
{
MessageBox(_T("TCP 数据发送失败!"));
nErrorCode = WSAGetLastError();
delete[] pcharbuff;
return;
}
cnt = cnt + actlen;
if (cnt < filelen)
Sleep(1000);
}
delete[] pcharbuff;
}
}
我要发送的文件大小大概300M, 我想通过TCP/IP把数据发送到PC机上,我现在出现的问题的 我只能发送前320*240*2个数据,在第一次循环的时候可以成功,在接着读的时候 会出现读文件ReadFile就会失败,怎么回事呢?
|
|