我自己用Socket封装了FTP,功能都实现了,就是不知道怎么实现上传进度
不知道什么原理??SOCKET有什么回调函数来返回服务断接收的字节,或者有什么别的办法实现??
郁闷ing.............,那怎么判断缓冲区的字节有没有发送完呢,用什么函数完成
GetSockOpt和SetSockOpt这个2个函数对我这个问题有帮助吗????
贴一段上传代码
SetBinaryMode(true);//设置传输模式
CreateDataSocket();//创建数据连接
SendCommand("STOR "+filename+"\r\n"); if( !(retvalue == 125 || retvalue == 150) )
{
AfxMessageBox(reply.Mid(4));
}
ds.Send(buf,len,0);//发送数据
if (ds!=NULL)
{
ds.Close();
}
replyline();
if( !(retvalue == 226 || retvalue == 250) )
{
AfxMessageBox(reply.Mid(4));
}
SetBinaryMode(false);
不知道什么原理??SOCKET有什么回调函数来返回服务断接收的字节,或者有什么别的办法实现??
郁闷ing.............,那怎么判断缓冲区的字节有没有发送完呢,用什么函数完成
GetSockOpt和SetSockOpt这个2个函数对我这个问题有帮助吗????
贴一段上传代码
SetBinaryMode(true);//设置传输模式
CreateDataSocket();//创建数据连接
SendCommand("STOR "+filename+"\r\n"); if( !(retvalue == 125 || retvalue == 150) )
{
AfxMessageBox(reply.Mid(4));
}
ds.Send(buf,len,0);//发送数据
if (ds!=NULL)
{
ds.Close();
}
replyline();
if( !(retvalue == 226 || retvalue == 250) )
{
AfxMessageBox(reply.Mid(4));
}
SetBinaryMode(false);
http://www.codeproject.com/internet/ftpserver.asp好象没有取得发送字节的函数,的自己计算发送了多少。你看看上面的两个别人写的ftp
这个是做的一个ftp client class 也许对你又帮助。
如果判断buffer还有没有发送完数据你,你的在每个函数返回的发送实际字节和你想要发送的size 比较了。在接受端一样做验证,如果sent_size == you_want_sent 那么说明发送成功了。
m_pro.UpdateWindow();
其中,m_pro是你的进度条控件,IDC_PROGRESS是其ID。
然后s.send(...)这种是阻塞还不非阻塞的
比如int p;
while(1)
{
p=s.send()
//这样发送是阻塞吗??好象函数都是马上返回值的
}
该怎么解决呢??
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vclib/html/_mfc_casyncsocket.3a3a.send.asp
{
while (m_nBytesSent < m_nBytesBufferSize)
{
int dwBytes; if ((dwBytes = Send((LPCTSTR)m_sendBuffer + m_nBytesSent,
m_nBytesBufferSize - m_nBytesSent)) == SOCKET_ERROR)
{
if (GetLastError() == WSAEWOULDBLOCK) break;
else
{
TCHAR szError[256];
wsprintf(szError, "Server Socket failed to send: %d",
GetLastError());
Close();
AfxMessageBox (szError);
}
}
else
{
m_nBytesSent += dwBytes;
}
}
if (m_nBytesSent == m_nBytesBufferSize)
{
m_nBytesSent = m_nBytesBufferSize = 0;
m_sendBuffer = "";
}
CAsyncSocket::OnSend(nErrorCode);
}
怎么判断上传的大小呢
TO: hansblue(爱华者)
交流一下,你是怎么搞的啊