VC socket连接池?

【天运子】 2010-05-13 09:08:58
谁懂的,有相关的源代码吗?有的行行好。发我份。
要改善下我的程序,以应对在很多客户端的情况下,去接受保留套接字。
好人。。。
...全文
823 29 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
29 条回复
切换为时间正序
请发表友善的回复…
发表回复
tech_study_00 2010-06-07
  • 打赏
  • 举报
回复
why not queue rather than list?
【天运子】 2010-06-03
  • 打赏
  • 举报
回复
用链表完成啦-
【天运子】 2010-05-21
  • 打赏
  • 举报
回复
[Quote=引用 24 楼 yitang2003 的回复:]
给我一个邮箱,我学习IOCP时,编写过DEMO
[/Quote]QQ284875005
yitang2003 2010-05-21
  • 打赏
  • 举报
回复
给我一个邮箱,我学习IOCP时,编写过DEMO
【天运子】 2010-05-21
  • 打赏
  • 举报
回复
[Quote=引用 22 楼 yitang2003 的回复:]
看看IOCP自然的就用到连接池了
[/Quote]你用过吗?给个例子可以吗 ?它就像一个容器把,用来存放套接字。我需要看看他怎么用的
yitang2003 2010-05-21
  • 打赏
  • 举报
回复
GF_WriteLog( "创建套接字失败,无法提交新的接收请求 ");
后增加delete [] pSend;
yitang2003 2010-05-21
  • 打赏
  • 举报
回复
程序片段
for (i = 0;i<MAX_SOCKET_ACCEPT;i++)
{
SubmmitNewAccep();
}
void CVideoSockServer::SubmmitNewAccep()
{
CVideoSockeSend * pSend = new CVideoSockeSend[1];
if(!pSend->InitClass())
{
GF_WriteLog("创建套接字失败,无法提交新的接收请求");
return;
}
st_OverLapped * pOver = G_Memery.GetData();
pOver->CMD = CMD_Accept;
pOver->lpSockSend = pSend;
AcceptEx(m_VideoSocketListen,pSend->GetSocket(),pOver->buff,0,sizeof(sockaddr_in)+16,sizeof(sockaddr_in)+16,NULL,(LPOVERLAPPED)&pOver->OverLapped);
每一个客户接入后,再次投递。实际上由IOCP维护连接池

}
【天运子】 2010-05-20
  • 打赏
  • 举报
回复
连接池 啊连接池
yitang2003 2010-05-20
  • 打赏
  • 举报
回复
看看IOCP自然的就用到连接池了
【天运子】 2010-05-19
  • 打赏
  • 举报
回复
连接池啊 没人用吗?
-海盗旗- 2010-05-17
  • 打赏
  • 举报
回复
美女的帖子 回复的人就是多啊

先看理论吧 告诉你也 你也未必能完全明白
【天运子】 2010-05-17
  • 打赏
  • 举报
回复
没人做过类似的 ?要是有N个客户端 连接,服务端用什么接受套接字的呢 ?大家都是怎么解决的?
【天运子】 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 kevin_zcwen 的回复:]
<!--发送端先发送文件列表(文件的大小和一些属性)给接收端-->
发送端在这时候一定是新起一个线程吧,监听和接收发送不应该用同一个线程吧
然后<!--发送端接受到消息后,创建发送线程-->
这里你有必要再创建发送线程么?之前给接收端发送文件列表(文件的大小和一些属性)这个线程不可以继续用吗?因为你自己封装的消息已经包含了很多信息的啊

一起等高手解答?
[/Quote]
我的是短连接。就是每次通信需要连接,所以发送和接受时分别一个线程,但是都要重新监听 连接
tech_study_00 2010-05-17
  • 打赏
  • 举报
回复
not so complex, search code on the website: www.codeproject.com
弱水垂钓 2010-05-17
  • 打赏
  • 举报
回复
<!--发送端先发送文件列表(文件的大小和一些属性)给接收端-->
发送端在这时候一定是新起一个线程吧,监听和接收发送不应该用同一个线程吧
然后<!--发送端接受到消息后,创建发送线程-->
这里你有必要再创建发送线程么?之前给接收端发送文件列表(文件的大小和一些属性)这个线程不可以继续用吗?因为你自己封装的消息已经包含了很多信息的啊

一起等高手解答?
【天运子】 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 15 楼 kevin_zcwen 的回复:]
双向传输:就是既可以从服务器端传输数据到客户端,也可以从客户端传输数据到服务器端
带宽:在同一时间你传输数据量准定会有一个限制,就像你用的宽带,假设是2M的话那你同一时间传输的数据量不会超过2M

说实话我也刚入门VC不久

问你几个问题啊
1.你说的客户端需要先连接到服务器端吗?还是不需要连接你有一个类似于列表的东西可以直接选的(比方说直接从数据库中提取)如果是不需要的话你整体的系统……
[/Quote]
客户端先输入IP连接服务端,服务端可以在公网 或局域网都通过测试了,原理是,选择文件发送,发送端先发送文件列表(文件的大小和一些属性)给接收端,接收端接收到文件列表消息后,创建接受文件线程,线程里先发送一个消息给发送端(告诉发送端我已准备好接受文件),发送端接受到消息后,创建发送线程,开始发送文件内容,接收端接受文件内容。我的是短连接,也就是在每次发送或接受线程里面都重新连接与监听
弱水垂钓 2010-05-17
  • 打赏
  • 举报
回复
双向传输:就是既可以从服务器端传输数据到客户端,也可以从客户端传输数据到服务器端
带宽:在同一时间你传输数据量准定会有一个限制,就像你用的宽带,假设是2M的话那你同一时间传输的数据量不会超过2M

说实话我也刚入门VC不久

问你几个问题啊
1.你说的客户端需要先连接到服务器端吗?还是不需要连接你有一个类似于列表的东西可以直接选的(比方说直接从数据库中提取)如果是不需要的话你整体的系统就变成了客户端(你所说的服务器端)->服务器端(原来的客户端)的架构了,这样的话我觉得直接用多线程就可以完成你要做的吧(可能线程数要相对多一些),传送的数据是固定的,客户端的地址信息什么的可以直接从队列里取().
如果是需要的话,我猜想你的设计是:服务器端一旦接收到客户端请求就给客户端发送一个文件
接收到请求后:你当然会用多线程来做,但是你在起线程前先判断一下是否有空闲的连接可以用,有的话就可以直接用这个连接来发送文件了,但是这么设计会有一个问题就是:发送数据时文件映射的次数, 也就是我在问题2里说的,所以我觉得你的设计应该是在确认连接到服务器端的客户端信息之后.再映射文件,最后依次发送给客户端.
2.你是做文件传输,那你在传输数据的时候是每个线程里来完成文件映射再传送呢?还是先映射完了再发到每个线程里传输?
3.是在一台电脑上做的测试吗?
如果是一台的话我觉得还是可以接收"客户端一多服务器就CPU高"的问题

【天运子】 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 kevin_zcwen 的回复:]
双向传输?单向传输(服务器->客户端||客户端->服务器)?带宽问题考虑到了?
[/Quote]双向传输 带宽是何意思?用的是TCP协议,程序能运行,传输也成功,就是现在不是用连接池的方法接受客户端的套接字的 ,客户端一多服务器CPU就会很高。听人说可以用连接池
弱水垂钓 2010-05-17
  • 打赏
  • 举报
回复
双向传输?单向传输(服务器->客户端||客户端->服务器)?带宽问题考虑到了?
【天运子】 2010-05-17
  • 打赏
  • 举报
回复
[Quote=引用 11 楼 qidahai985615 的回复:]
美女的帖子 回复的人就是多啊

先看理论吧 告诉你也 你也未必能完全明白
[/Quote]理论还怎么看?我程序已经运行成功了,只是中间会出现失败,我做的是文件传输。
加载更多回复(9)

18,363

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧