社区
网络编程
帖子详情
如何让使用CAsyncSocket类接受多用户连接(就是一服务器+多客户端方式)?
AbsurdLife
2003-08-18 08:02:06
我是这样做的:让监听Socket一直处于监听状态,它里面有一个CAsyncSocket数组来与用户连接,每次连接数组序号加一,等待下一个连接。可是只有一个客户端能够连接上,其他的不行,不知怎么会事。
请问那里出问题了,该如何处理,请高手指点迷津。
...全文
151
6
打赏
收藏
如何让使用CAsyncSocket类接受多用户连接(就是一服务器+多客户端方式)?
我是这样做的:让监听Socket一直处于监听状态,它里面有一个CAsyncSocket数组来与用户连接,每次连接数组序号加一,等待下一个连接。可是只有一个客户端能够连接上,其他的不行,不知怎么会事。 请问那里出问题了,该如何处理,请高手指点迷津。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
AbsurdLife
2003-08-19
打赏
举报
回复
另外,当一个套接字接收一个远端连接后,是否就不再监听了,我用timer强制它监听是否有错?还有bind是否应该用上?
分不是问题,能解决问题绝对可以给高分,希望大家帮忙。
AbsurdLife
2003-08-19
打赏
举报
回复
to 大家:
我大致就是你们说的这样处理的,我把代码贴一下,帮忙看看有什么地方不对好吗?
//--------------------------
void ServerSck::OnAccept(int nErrorCode)
{
// TODO: Add your specialized code here and/or call the base class
CClientSck *pSckNew=new CClientSck();
if(Accept(*pSckNew))
{
pSckNew->AsyncSelect(FD_READ);
m_pSck[m_nSckCount]=pSckNew;
CWinApp* thisApp=AfxGetApp();
CServerDlg* thisDlg=(CServerDlg*)(thisApp->GetMainWnd());
//char RemoteIp[20];
//memset(RemoteIp,0,20);
CString RemoteIp;
unsigned int nport=5150;
m_pSck[m_nSckCount]->GetPeerName(RemoteIp,nport);
char szRemoteIp[20];
memset(szRemoteIp,0,20);
strcpy(szRemoteIp,RemoteIp);
char strtemp[100];
sprintf(strtemp,"%s%s","已经连接到远程客户端",szRemoteIp);
//thisDlg->KillTimer(1);
CWnd* label=thisDlg->GetDlgItem(IDC_Status);
label->SetWindowText(strtemp);
CWnd* btnListen=thisDlg->GetDlgItem(IDC_Listen);
btnListen->EnableWindow(false);
CWnd* btnSend=thisDlg->GetDlgItem(IDC_Send);
btnSend->EnableWindow(true);
//thisDlg->m_ServerSck.Listen(1);
m_nSckCount++;
}
else
{
delete pSckNew;
}
CAsyncSocket::OnAccept(nErrorCode);
}
//--------------------------
AbsurdLife
2003-08-19
打赏
举报
回复
up
joinrry
2003-08-18
打赏
举报
回复
在Server端的OnAccept()相应事件中
单步调试一下,
是否没有产生网络事件
或者是处理接受Accept的线程中止啦!
遇到任何问题,重要的是断点调试
flinming
2003-08-18
打赏
举报
回复
客户端来连接,服务器监听产生一个新的套接字,这个套接字就是客户端连接,负责发送数据接收数据,关闭套接字等等。
与多个客户端连接,服务器以要控制好当前套接字是与那个客户端连接的问题!控制就是麻烦一点!
lggang
2003-08-18
打赏
举报
回复
在Server端和Client端都要进行设置,程序如下:
在Server端的OnAccept()相应事件中
CServerSocket* pSocket=new CServerSocket;
m_pSocket->Accept(*pSocket);
即每有一个连接请求触发OnAccept()事件时,就动态生成一个用于与客户端连接的Socket
Server端就用这个Socket与客户端通信。
当有另一个请求来的时候,同样触发OnAccept()事件,会再次动态生成与客户端连接的Socket。
在Client端连接请求事件中:
CClientsocket* pSocket=new CServersocket;
pSocket->Create();
这样就能实现多连接了
psocket->Connect();
vc++ 应用源码包_5
另外有只打开一个应用程序、CRichEdit的
使用
、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...
网络编程实用教程(第三版).zip
5.1.3 关于
CA
sync
Socket
类
可以
接受
并处理的消息事件 112 5.1.4
客户端
套接字对象请求
连接
到
服务器
端套接字对象 114 5.1.5
服务器
接收客户机的
连接
请求 115 5.1.6 发送与接收流式数据 116 5.1.7 关闭套接字...
c++
socket
聊天室程序
网络编程技术,可以用作基础教程,有个
服务器
端和
客户端
,可以相互聊天,但属于基础
类
型
vc++ 应用源码包_1
另外有只打开一个应用程序、CRichEdit的
使用
、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...
vc++ 应用源码包_6
另外有只打开一个应用程序、CRichEdit的
使用
、最小到托盘、自动检测在线用户(多播组)等。 freeeim_FreeEIM_企业即时通讯软件源代码2010年8月份最新版 FTP、HTTP 多线程断点续传下载文件 源码 gdiplus应用实例 ...
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章