多个Client连接一个Server的思路是怎样的?

小行星X 2003-04-01 04:47:37
在MFC中如何实现呢?我的意思是当程序Listen到连接请求后,怎样处理?是否要多线程?能不能动态分配?谢谢!
...全文
186 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
iboxer 2003-04-18
  • 打赏
  • 举报
回复
gz
小行星X 2003-04-17
  • 打赏
  • 举报
回复
就这样吧,谢谢大家!!!
yydyqy 2003-04-11
  • 打赏
  • 举报
回复
完成端口+线程池+内存池模式,那位高手能解释一下吗?
zhong_jeffrey 2003-04-11
  • 打赏
  • 举报
回复
关于 http://www.codeproject.com/internet/ServerSocket.asp 这个程序,我看了一下源码。好象他是为每一个Client创造一个SOCKET SERVER来等待连接(accept),就是说如果有20个Socket Client就有20个Socket Server。一定要这样做吗?还是我对这个程序的理解不对?请知道的TX帮忙解释一下。
netjaki 2003-04-10
  • 打赏
  • 举报
回复
good gz
Wenxy1 2003-04-09
  • 打赏
  • 举报
回复
I study network program !
侠雨飞飞 2003-04-08
  • 打赏
  • 举报
回复
如果每Accept就开一个线程(直到断开)
如果做到QQ那样的效果,那这些线程也只能起个监视的作用吧
真正的消息收发还要另外做,是吧

嘻嘻,偶是菜虫
不是害虫
小行星X 2003-04-06
  • 打赏
  • 举报
回复
http://www.codeproject.com/internet/ServerSocket.asp

CSocketComm是MFC的类吧,是吗?天啊,如果是的话那就太简单了,是吗?
CCppCs 2003-04-06
  • 打赏
  • 举报
回复
浏览器访问网站就是一个典型的"多个Client连接一个Server"应用。
不过,下载完网页后就断开连接了。
Skt32 2003-04-06
  • 打赏
  • 举报
回复
http://www.codeproject.com/internet/ServerSocket.asp
看看这个代码就可以了,还没弄出来吗?
小行星X 2003-04-05
  • 打赏
  • 举报
回复
感谢jemmylau(枕头)和Skt32(Skt32),codeproject的文章我早已作了书签,可是我太笨了,到现在还没看明白,总是在OnAccept和线程中打转,我甚至这样做了声明:

CMySocket soc[m_MaxConnection];

然后就用这些东西&^$%@@#$#$$%@#@ 类似ba_saner()的代码 …………我快不行了…………

完成端口+线程池+内存池,我不知道我还需要什么知识去了解,但还是感谢flashboy(快活一刀),这应该是最好的办法,但是我很有可能没时间了

容我再等一下楼下的前辈们
Skt32 2003-04-05
  • 打赏
  • 举报
回复
Multi-threaded Client/Server Socket class
By Ernest Laurentin
http://www.codeproject.com/internet/ServerSocket.asp
night_cat 2003-04-05
  • 打赏
  • 举报
回复
up
free_card 2003-04-04
  • 打赏
  • 举报
回复
up
用户 昵称 2003-04-02
  • 打赏
  • 举报
回复
server每次accept就开一个thread。
Skt32 2003-04-01
  • 打赏
  • 举报
回复
up
ba_saner 2003-04-01
  • 打赏
  • 举报
回复
服务器为客户请求建立Socket队列
服务器端为每一个客户连接建立一个Socket,为了数据传输不混乱,如楼上所说,资源占用。
少还可以
例码
void CListeningSocket::OnAccept(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
CClientSocket* pSocket=new CClientSocket(m_pMainFrame);
if(m_pMainFrame->m_pListeningSocket->Accept(*pSocket))
{
m_pMainFrame->m_pConnectionList.AddTail(pSocket);
}
else
delete pSocket;
CSocket::OnAccept(nErrorCode);
}
jemmylau 2003-04-01
  • 打赏
  • 举报
回复
服务端Listen后
客户就可以Connect了
当客户Connect的时候
服务端就会触发OnAccept
这时候动态产生一个Socket来Accept要接入的连接,
这样动态产生的Socket就可以跟客户Socket通信了。

以上是TCP;
对于UDP则不需要Listen了
服务端先Create一个Socket,也就是绑定的过程;
客户也Create一个Socket,就直接可以向服务端绑定的地址和端口SendTo数据了,
服务端同时调用函数ReceiveFrom接受数据了。

http://www.codeproject.com/internet/ndk.php
这个例子不错。
flashboy 2003-04-01
  • 打赏
  • 举报
回复
Server端Listen后,可以使用Accept进行守侯请求,如果有请求到达,该函数会返回一个SOCKET,在MFC中类似,返回一个CSocket对象指针。然后你可以把这个SOCKET或者CSocket存储起来,用来和对应的客户进行通讯。
如果考虑效率的话可以每个请求开一个线程去接受处理,但是这种方式并不适合做那中大规模并发服务器,因为很占资源,并且很容易服务器当掉,但是一般100以内的连接用这种方式可能是比较好的,如果超过这个数字甚至达到500、1000,那么就应该使用:
完成端口+线程池+内存池这种模式来实现。

18,356

社区成员

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

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