谁能给我点提示?若要看代码请告之
解决方案 »
- MFC为什么不能出现窗口?????????
- VC中怎样显示网上的图片如http://xxx.com/picture/xx.jpg
- 请问什么是 对话框模板?
- 急等急等急等!!!为何在下拉菜单中只有一个选项?
- 问个简单的问题,关于系统自动生成的菜单
- 我想采用socket来实现多计算机机流水线程序处理,大家觉得怎么样?
- 这里的斑竹请不要删,帮帮忙!!!(up 有分)
- 无助我的寻求先知的你,道先我不知道这个问题可能不可能:怎么才能在自己的程序中定义一个消息后,用HOOK接到这个消息?
- CreateBitmap方法无法成功创建CBitmap图片
- 缺少mclmcrrt713.dll怎么解决
- 大家知道CListCtrl::SetColumnWidth(int nCol, int cx )可以设置宽度,可是我现在想知道如果我不调用这个函数能否得到这个宽度?
- 今天刷屏到此告一段落,因为本人被封了一个IP,同时希望各大版主和管理员能理性的能积极的来处理这件事。
{
CFileTransfersDlg* pDlg = (CFileTransfersDlg*) lparam; pDlg->BrowseDir()
return 0;
}BOOL CFileTransfersDlg::BrowseDir( )//发送文件的函数
{
CSocket sockdata;
if(!sockdata.Create())
{
sockdata.Close();
return FALSE;
}
CString strIPAddress;
int Port
if(!sockdata.Connect(strIPAddress, Port ))
{
sockdata.Close();
return FALSE;
}
SendDataFile(sockdata, "d:\\test_From.txt", "d:\\test_To.txt");
sockdata.Close();
return TRUE;
}
//使用senSo发送路径为m_strPathDataF的文件,并告诉接收程序将文件保存在路径m_strPathDataT。
void CFileTransfersDlg::SendDataFile(CSocket &senSo, CString m_strPathDataF, CString m_strPathDataT)
{ //打开要发送的文件
CFile file;
if(!file.Open(m_strPathDataF, CFile::modeRead | CFile::typeBinary|CFile::shareDenyNone))
{
AfxMessageBox(_T("文件打开失败"));
senSo.Close();
return ;
} int nSize = 0, nLen = 0;
char buf[BLOCKSIZE];
file.Seek(0, CFile::begin); fd_set fdwrite;
int ret;
TIMEVAL timeout;
timeout.tv_sec = 2;
timeout.tv_usec = 0;
BOOL bFirstPackage = TRUE;
int iErrCode;
CString strErr; //开始传送文件
for(;;)
{ memset(buf, 0, BLOCKSIZE);
if( bFirstPackage )
{
strcpy(buf, m_strPathDataT.GetBuffer(0));
nLen = file.Read(buf+FILEINFO, BLOCKSIZE-FILEINFO);
}
else
nLen = file.Read(buf, BLOCKSIZE);
//一次读取BLOCKSIZE大小的文件内容 if(nLen == 0)
break;
//发送文件内容
while(TRUE)
{
FD_ZERO(&fdwrite);
FD_SET( senSo, &fdwrite);
if( (ret=select(0, NULL, &fdwrite,NULL, &timeout)) == SOCKET_ERROR )
{
iErrCode = WSAGetLastError();
switch(iErrCode)
{
case WSANOTINITIALISED:
strErr = "WSANOTINITIALISED";
break;
case WSAEFAULT:
strErr = "WSAEFAULT";
break;
case WSAENETDOWN:
strErr = "WSAENETDOWN";
break;
case WSAEINVAL:
strErr = "WSAEINVAL";
break;
case WSAEINTR:
strErr = "WSAEINTR";
break;
case WSAEINPROGRESS:
strErr = "WSAEINPROGRESS";
break;
case WSAENOTSOCK:
strErr = "WSAENOTSOCK";
break;
default :
strErr = "UNKNOWERROR";
break;
}
//::MessageBox(NULL, strErr.GetBuffer(0), "SendDataFile错误", MB_OK); //关闭文件
file.Close();
//关闭套接字
senSo.Close();
GetDlgItem(IDC_DISCONNECT)->EnableWindow(TRUE);
m_bIsTransmitting = FALSE;
return ;
}
if( ret == 0 )
{ //关闭文件
file.Close();
//关闭套接字
senSo.Close();
GetDlgItem(IDC_DISCONNECT)->EnableWindow(TRUE);
m_bIsTransmitting = FALSE;
return ;
}
if( ret > 0 )
{
if( FD_ISSET( senSo, &fdwrite ))
{
if( bFirstPackage )
{
nSize = senSo.Send(buf, nLen+FILEINFO);
bFirstPackage = FALSE;
}
else
nSize = senSo.Send(buf, nLen); if(nSize != SOCKET_ERROR)
break;
else
{
iErrCode = WSAGetLastError();
switch(iErrCode)
{
case WSANOTINITIALISED:
strErr = "WSANOTINITIALISED";
break;
case WSAENETDOWN:
strErr = "WSAENETDOWN";
break;
case WSAEINVAL:
strErr = "WSAEINVAL";
break;
case WSAEINPROGRESS:
strErr = "WSAEINPROGRESS";
break;
case WSAENOTSOCK:
strErr = "WSAENOTSOCK";
break;
case WSAENOTCONN:
strErr = "WSAENOTCONN";
break;
case WSAEOPNOTSUPP:
strErr = "WSAEOPNOTSUPP";
break;
case WSAESHUTDOWN:
strErr = "WSAESHUTDOWN";
break;
case WSAEWOULDBLOCK:
strErr = "WSAEWOULDBLOCK";
break;
case WSAEMSGSIZE:
strErr = "WSAEMSGSIZE";
break;
case WSAECONNABORTED:
strErr = "WSAECONNABORTED";
break;
case WSAECONNRESET:
strErr = "WSAECONNRESET";
break;
case WSAEACCES:
strErr = "WSAEACCES";
break;
case WSAEFAULT:
strErr = "WSAEFAULT";
break;
case WSAENETRESET:
strErr = "WSAENETRESET";
break;
case WSAENOBUFS:
strErr = "WSAENOBUFS";
break;
default :
strErr = "UNKNOWERROR";
break;
} //关闭文件
file.Close(); //关闭套接字
senSo.Close();
GetDlgItem(IDC_DISCONNECT)->EnableWindow(TRUE);
m_bIsTransmitting = FALSE;
return ;
}
}
}
}
}
//关闭文件
file.Close();
//关闭套接字
senSo.Close();
}
UINT _SendDataFile(LPVOID lparam) 线程每5秒启动一次