社区
网络编程
帖子详情
类似QQ的多对话框聊天
long12310225
2010-12-24 02:04:23
csocket或CAsyncSocket建立的聊天软件,如何像QQ那样,点击列表产生任意个对话框,然后可以随意聊天?一般网上的是一对一的聊天的实例,没见到一对多的像QQ那样的,请高手告诉我如何实现?如果有实例的话可以发去我邮箱:375102274@qq.com 。
...全文
299
9
打赏
收藏
类似QQ的多对话框聊天
csocket或CAsyncSocket建立的聊天软件,如何像QQ那样,点击列表产生任意个对话框,然后可以随意聊天?一般网上的是一对一的聊天的实例,没见到一对多的像QQ那样的,请高手告诉我如何实现?如果有实例的话可以发去我邮箱:375102274@qq.com 。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
KaKaKaKa
2011-01-05
打赏
举报
回复
mark++
superhanxin5
2010-12-25
打赏
举报
回复
mark x
awain
2010-12-25
打赏
举报
回复
那楼主的程序应该设置成这样
在主程序窗口:有个监听SOCKET Socket用于监听会话请求,同时有SOCKET AcceptSocket[20]用于接受请求并会话。来一个会话请求,就从20个AcceptSocket中选个空的AcceptSocket与之连接弹出聊天窗口,并设置该Socket的WM_SOCKET_READ消息的处理窗口句柄。
同时还有个SOCKET SendSocket用于发送请求,连接成功后同样设置消息。这样楼主就同时可以和21个人进行会话了。
下面是我曾经做的一个类似QQ的点对点聊天程序,测试通过的,多用户多窗口聊天。希望对楼主有所帮助
afx_msg LRESULT CSimpleQDlg::OnServerAccept(WPARAM wParam, LPARAM lParam)
{
int nLength = sizeof(SOCKADDR);
SOCKADDR_IN addr;
int i;
if (WSAGETSELECTEVENT(lParam) == FD_ACCEPT)
{
for(i=0;(i<20)&&(m_hAcceptSocket[i]!=INVALID_SOCKET);i++) ;//查找空闲AcceptSocket
if(i==20) return 0; //没有空闲AcceptSocket,直接退出
m_hAcceptSocket[i] = accept(m_hServerSocket, (LPSOCKADDR)&addr, (LPINT)&nLength);
//连接成功后首先发生自己的昵称
int iSize = WideCharToMultiByte(CP_ACP,0,m_staticName,-1,NULL,0,NULL,NULL);
char *na = new char[iSize];
WideCharToMultiByte(CP_ACP,0,m_staticName,-1,na,iSize,NULL,NULL);//转化CString类型的IP为char *
send(m_hAcceptSocket[i],na,strlen(na),0);
CSimpleQWordChat *sqwc=new CSimpleQWordChat();
sqwc->SetNickName(m_staticName);
sqwc->SetPeerIP(CString(inet_ntoa(addr.sin_addr)));
sqwc->Create(IDD_DIALOG_WORDCHAT,GetDesktopWindow());
//这一句必须放在Create之后,因为此时窗体句柄m_hWnd才会分配空间
sqwc->SetSocket(m_hAcceptSocket[i]);
sqwc->ShowWindow(SW_SHOW);
sqwc->UpdateData(false);
}
return 0;
}
void CSimpleQWordChat::SetSocket(SOCKET& socket)
{
m_hSocket=socket;
//自定义消息
WSAAsyncSelect(m_hSocket,this->m_hWnd,WM_SOCKET_READ,FD_READ);
}
要自己处理添加消息处理函数:ON_MESSAGE(WM_SOCKET_READ, &CSimpleQWordChat::OnSocketRead)
这样某个Socket有数据到来后后就会向指定的窗口m_hWnd发送消息WM_SOCKET_READ,FD_READ是消息通知码。各个窗口间不干扰!
Jurang
2010-12-24
打赏
举报
回复
一对多的聊天,采用的是UDP广播消息。
VR_Lab
2010-12-24
打赏
举报
回复
其实就是相当与加入一个组中,让后通关这个组中有多少个成员然后将信息都发送过去即可(针对没有服务器模式的,就像飞鸽那种的)
zjfhgdx
2010-12-24
打赏
举报
回复
一般网上的是一对一的聊天的实例只有一个socket连接。
一对多,多连几个socket不就可以了
Eleven
2010-12-24
打赏
举报
回复
聊天室程序,google一下应该很多的
oyljerry
2010-12-24
打赏
举报
回复
需要从服务器上获取其他好友的IP等信息,然后socket通信
varding
2010-12-24
打赏
举报
回复
飞鸽和qq很像还有源码的
类似
QQ
消息框的
对话框
"
类似
QQ
消息框的
对话框
"是一个典型的界面设计元素,它模仿了
QQ
这款流行即时通讯软件中的消息展示方式。这种
对话框
通常包含发送者和接收者的头像、昵称、消息内容以及时间戳等关键信息,为用户提供了一个清晰、直观的...
VC 仿
QQ
聊天
对话框
与好友列表框
为了实现
类似
QQ
的消息气泡效果,可能需要自定义控件或者利用绘图函数直接在客户区绘制。 **消息处理**是实现
聊天
功能的关键。VC++中的消息机制基于WM_MESSAGE,你需要重载CWinApp::PreTranslateMessage,CWnd::...
模拟
QQ
对话框
的VC
聊天
室程序代码
【标题】"模拟
QQ
对话框
的VC
聊天
室程序代码"是一个基于Visual C++(简称VC)的项目,旨在实现一个
类似
QQ
的
对话框
界面的
聊天
室应用。在计算机科学领域,这种类型的项目通常涉及到网络编程,特别是使用Winsock库进行套...
Qt编写
qq
对话框
在本项目中,我们主要探讨的是使用Qt框架来编写一个
类似
于
QQ
对话框
的应用程序。Qt是一个跨平台的C++库,广泛应用于图形用户界面(GUI)开发,支持Windows、Linux、MacOS等多个操作系统。它提供了丰富的API和工具,...
仿
QQ
对话框
源码
标签“仿
QQ
对话框
源码”进一步确认了这是关于
对话框
界面的代码实现,学习这个源码可以帮助开发者了解如何在实际项目中创建
类似
QQ
的
聊天
界面,提升应用的用户体验。 至于压缩包子文件的文件名称"ListView",它可能...
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章