现在在PC机(xp)和PDA(WinCE5)之间建立TCP连接,采用CSocket类进行文件传输通讯,PDA端采用CESocket类。遇到一个很奇怪的问题,PDA向PC机发送文件(470k),大约需要1min的时间;而PC机向PDA发送文件(1.37M),只需要5秒左右。PDA采用的是ARMV4I的CPU。请问问题出在哪里?与WinCE系统的定制有关?还是什么别的?
解决方案 »
- VC++, 多个视图的鼠标十字线同步的问题
- 简单问题CPropertySHeet
- 如何在控件中判断父窗口中(也就是对话框上)是否有菜单弹出?
- 在数据库导入时#import如何选择系统文件
- 请问怎么把字符串CString(其中有汉字)变成字符?先谢谢了
- 100分求一串口通讯的程序(用MSCOMM写的),要求有自己的协议和超时错误!分不够可以加!
- Run-Time Check Failure #2 - Stack around the variable 'freq' was corrupted.
- 我新开发了两个软件包:请大家多多指教
- 高手指点!!!!!!!如何在论坛里发 html 代码啊?
- 大侠救命。。。
- 请教关于directx的问题
- (100分)给你一个全是数据的TXT,在ONDRAW画出等高线?
一般情况下都应该是发送比接收要快的。
void CTCP_EVCDlg::sendOneFile(CString fileName)
{
CFile transFile;
CFileException e; if (transFile.Open(fileName,CFile::modeRead, &e))
{
UINT fLength = transFile.GetLength();
UINT dwRead = 0;
char* send = new char[MTU]; //MTU---8192
while (dwRead < fLength)
{
UINT dw = transFile.Read(send, MTU);
m_psockClient.Send(send, dw); dwRead += dw;
} transFile.Close(); delete []send;
}
}
看看是不是读文件的问题
如果很快的话就应该是接收端的问题,是不是CSocket跨线程使用等
void CTransferSocket::OnReceive(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
UINT len= 481078;//文件大小为已知 CFile recvFile;
CString fileName;
fileName.Format("D:\\ab_%d.bmp",picNum);
if (!recvFile.Open(fileName, CFile::modeCreate | CFile::modeWrite | CFile::typeBinary))
return; UINT dwRead = 0;
char* data = new char[MTU];
while(dwRead < len)
{
memset(data,0,MTU);
UINT dw = Receive(data,MTU);
recvFile.Write(data, dw);
dwRead+=dw;
} recvFile.Close();
delete[] data;
CTCP_VCDlg* m_dlg =(CTCP_VCDlg*) AfxGetApp()->GetMainWnd();
m_dlg->HandleReceive();
CSocket::OnReceive(nErrorCode);
}