void CSocketServer::OnAccept(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
CSocket::OnAccept(nErrorCode);
if(m_pDlg)
{
m_pDlg->ProcessAccept();
}
}void CXaInfoServerDlg::ProcessAccept()
{
CSocketClient* pSocketClient=new CSocketClient(this);
if(m_pSocketServer->Accept(*pSocketClient))
{
m_SocketClientList.AddTail(pSocketClient);
}
else
{
delete pSocketClient;
}
}
一个基于C/S的模式的文件传输系统,此代码可以实现多用户登录,但是但某一用户传输大文件的时候,
服务器就不能及时响应其他用户发送的消息了。
我想着是发送大文件时 启动一个线程,但是老处assert错误,上网一查,原来CSocket只能在同一个线程中
创建,发送和接收操作,所以另启动一个线程发送文件是不可行了。请问我应该如何设计才可以实现多用户下载文件呢。
{
// TODO: Add your specialized code here and/or call the base class
CSocket::OnAccept(nErrorCode);
if(m_pDlg)
{
m_pDlg->ProcessAccept();
}
}void CXaInfoServerDlg::ProcessAccept()
{
CSocketClient* pSocketClient=new CSocketClient(this);
if(m_pSocketServer->Accept(*pSocketClient))
{
m_SocketClientList.AddTail(pSocketClient);
}
else
{
delete pSocketClient;
}
}
一个基于C/S的模式的文件传输系统,此代码可以实现多用户登录,但是但某一用户传输大文件的时候,
服务器就不能及时响应其他用户发送的消息了。
我想着是发送大文件时 启动一个线程,但是老处assert错误,上网一查,原来CSocket只能在同一个线程中
创建,发送和接收操作,所以另启动一个线程发送文件是不可行了。请问我应该如何设计才可以实现多用户下载文件呢。
http://topic.csdn.net/t/20030903/22/2221050.html
客户端连接服务器端
C <---port-------S
服务器端返回一个端口给C,同时启动一个AP bind port
C----accept use port----->s.Ap
数据传输 end
C----close port
s.AP ---close -----------
我的资源中的 版本控制安装就是这种方式实现的。
CSocket多线程最容易就碰到Assert(---)错误,很莫名其妙,最好还是用socket apigl
放弃使用CSocket