2013-07-04
展开全部
发送端,将文件分成N份(如5),FILE1(0-a字节),FILE2(a-b字节),FILE3(b-c字节),FILE4(c-d字节),FILE5(d-文件长度)。 发送可以使用M个线程(如5),THREAD1负责发送FILE1,依次类推,发送的每个数据包包括如下内容:文件内容的长度,文件内容,文件内容起始点相对于整个文件的位置,文件内容相对于整个文件的位置。例如:文件A的总长度为100000字节,则可以先发送一个数据包给接收端,让其准备接收,接着发送 4000(长度),....(内容的二进制流),0(起始),4000(结束)。 接收端根据接收的包写文件即可。 http://www.vckbase.com/document/viewdoc/?id=448 看一下吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-04
展开全部
在VC中可以调用MFC函数AfxBeginThread,创建线程。线程做什么,怎么做就得看你自己的设计了。贴一段MSDN里的代码:Visual C++ Copy Code class CSockThread : public CWinThread{public: SOCKET m_hConnected;protected: CChatSocket m_sConnected; // remainder of class declaration omitted. Visual C++ Copy Code BOOL CSockThread::InitInstance(){ // Attach the socket object to the socket handle // in the context of this thread. m_sConnected.Attach(m_hConnected); m_hConnected = NULL; return TRUE;} Visual C++ Copy Code // This listening socket has been constructed// in the primary thread.void CListeningSocket::OnAccept(int nErrorCode){ UNREFERENCED_PARAMETER(nErrorCode); // This CSocket object is used just temporarily // to accept the incoming connection. CSocket sConnected; Accept(sConnected); // Start the other thread. CSockThread* pSockThread = (CSockThread*)AfxBeginThread( RUNTIME_CLASS(CSockThread), THREAD_PRIORITY_NORMAL, 0, CREATE_SUSPENDED); if (NULL != pSockThread) { // Detach the newly accepted socket and save // the SOCKET handle in our new thread object. // After detaching it, it should no longer be // used in the context of this thread. pSockThread->m_hConnected = sConnected.Detach(); pSockThread->ResumeThread(); }}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-07-04
展开全部
看看msdn吧,说不清!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询