在这里继续 希望上个帖子的好心人能够帮我解决问题
解决方案 »
- 谁用过这个函数CMFCPropertyGridCtrl::DeleteProperty(CMFCPropertyGridProperty*& pProp...
- MFC编程产生的图形,怎么直接传输到FPGA模块并输出呢
- 发现有些“市井”思维
- 如何实现类似ReadyOn 的windows 即时启动功能
- socket连接的问题
- 照着书写了一个聊天程序,可是老编译不过去,高手帮我看一下!在线等候...
- 怎么在VC6.0(7.0)IDE中建立一个WinMain()启动窗口的c程序工程?
- vc中用2进制方式打开文件, 并显示是怎么实现的?
- 为什么在屏幕上显示不出图像,大家帮忙改一下贴在这里,谢谢了。
- 关于数组的问题,请各位高手帮忙。
- 想HookADO中的DllGetClassObject方法,以监视应用程序使用ADO进行的数据库连接,可行么?
- MFC怎样实现资源管理器功能
如果使用UDP协议需要对数据包进行编号,接收方收到后将数据包按照编号写入文件中响应位置,并将编号回发,发送端如果在一定时间内没有收到接收端的回应则自动重发该数据包。如果觉得这种方法麻烦,可以使用TCP协议。
{
CFile MyFileOpen;
if(!MyFileOpen.Open(strPathNameOut,CFile::modeRead))
{
MessageBox(NULL,"Can't open the file",NULL,NULL);
}
char szBuffer[6124]={0};
dw=0;
//if(socketSendOut==INVALID_SOCKET)AfxMessageBox("文件发送句柄没有启动!");
while(DWORD(dw)<MyFileOpen.GetLength())
{
LONG nRead=MyFileOpen.Read(szBuffer,6124);
if(::send(socketSendOut,szBuffer,nRead,0)==SOCKET_ERROR)AfxMessageBox("文件发送错误"); dw+=nRead;
Sleep(3);
}
AfxGetMainWnd( )->KillTimer(2);
MyFileOpen.Close();
CString sz;
AfxGetMainWnd( )->SetTimer(3,100,NULL);
AfxGetMainWnd( )->GetDlgItem(IDC_TEXTDISPLAY)->GetWindowText(sz);
sz=sz+"已经发送完毕!";
AfxGetMainWnd( )->GetDlgItem(IDC_TEXTDISPLAY)->SetWindowText(sz);
::closesocket(socketSendOut);
socketSendOut=INVALID_SOCKET;
return 0;
}
char buffer[4+10240];for (int i=0;;i++)
{
*(PDWORD)buffer = i;
// read 10240 bytes to buffer+4
// send 4+10240 bytes
// ……
}
接收段:
char buffer[4+10240];
while (true)
{
// recv 4+10240 bytes to buffer
int i = *(PDWORD)buffer;
// move file pointer to i*10240 and write 10240 bytes from buffer+4
// ……
}
*(pdword)=i 这是什么用的呢?
*(PDWORD)=i是把编号写在数据包的最前面,与文件数据一起发送。