纯PB实现的IM即时通讯代码 单服务器支持3000人以上在线

cqqjjf 2010-05-06 11:54:25


http://www.ourfreesoft.cn/soft/pbim.rar

源代码需要使用PB 11.0以上版本打开
提供了完整的PB运行库文件,并编译出了EXE文件,没有PB 11也可以测试
系统的离线消息需要10分钟后 才会发送给对方

如果安装后,服务器和客户端通讯不成功,请检查:
1、是否被防火墙阻止
2、参数设置是否完全正确
3、网络连接是否顺畅

1、系统实现方式
本工具使用纯PB代码实现,基于UDP协议进行通讯,PB版本为11.2,数据库为SQL 2000/2005/2008 另外有PB 9 8 7版。本测试程序美工比较简单,仅供研究使用。

系统结构

中心数据库--中间数据库
| |
| |
服务器端 |
| |直接访问
UDP| |
| |
客户端--------|

文件传输结构:通过服务器端获取通讯端口后,直接通讯
服务器端
| |
| |
| UDP |
客户端-----客户端


能进行路由器穿透,实现如同QQ一般的在线沟通。由于设计为嵌入ERP系统使用,方便企业管理人员管理,所有消息均通过服务器中转并记录到数据库。您可以将其改制为客户端和客户端直接通讯,以获得单服务器更大的用户承载量。

经过测试,单服务器1000人在线带宽暂用在2M以下,Intel E2200CPU占用率50%以下,内存300M内,服务器CPU建议为多核CPU以获得更高的处理效率。

为了减轻服务通讯端口的通讯量压力,服务器端负责
(1)在线消息中转,如对方未成功接收,则进入数据库离线消息表
(2)登录请求
(3)检查连接状态
(4)密码修改请求
(5)好友在线状态

以下操作,由于只在登录的时候发生一次,并且数据量较大,客户端通过访问中间数据库访问完成,当然,你也可以改制为不需中间数据库中转,直接由服务器返回消息。
(1)获取好友列表
(2)获取离线消息
...全文
1175 38 打赏 收藏 转发到动态 举报
写回复
用AI写文章
38 条回复
切换为时间正序
请发表友善的回复…
发表回复
凡爸 2011-11-18
  • 打赏
  • 举报
回复
局域网的,无法以因特网上使用
lightsword1 2010-12-30
  • 打赏
  • 举报
回复
不知道怎么样,下来看看
bombshell 2010-12-30
  • 打赏
  • 举报
回复
顶起来,呵呵。试用版到现在服务器端也没有运行起来,还需要楼主指教
StillMiss 2010-12-30
  • 打赏
  • 举报
回复
你真以为这东西有多少价值啊
StillMiss 2010-12-30
  • 打赏
  • 举报
回复
[Quote=引用 30 楼 liuxiang 的回复:]
直接就说卖源码得了,费这么大的劲。
[/Quote]

就是
haowan1982 2010-12-27
  • 打赏
  • 举报
回复
强力加顶!!
天道2046 2010-12-24
  • 打赏
  • 举报
回复
接分,顶起,圣诞元旦快乐!
ych12333 2010-12-20
  • 打赏
  • 举报
回复
我想要实现的
原理
liuxiang 2010-10-02
  • 打赏
  • 举报
回复
直接就说卖源码得了,费这么大的劲。
bombshell 2010-09-18
  • 打赏
  • 举报
回复
已经被破解了,呵呵!!!
hangzhou6274 2010-05-12
  • 打赏
  • 举报
回复
牛人,帮顶
misrunners 2010-05-11
  • 打赏
  • 举报
回复
学习了...
iqlife 2010-05-10
  • 打赏
  • 举报
回复
不怎么样啊
st_weicr 2010-05-10
  • 打赏
  • 举报
回复
原来是这样哦
wixinyoyo 2010-05-09
  • 打赏
  • 举报
回复
东西确实有点问题呀
我也不能编译通过

请LZ再查看下
zlnlh 2010-05-09
  • 打赏
  • 举报
回复
嗯,我的也是,错误一样
hk1660 2010-05-09
  • 打赏
  • 举报
回复
作者在readme中的说明
hk1660 2010-05-09
  • 打赏
  • 举报
回复
4、源代码获取或OEM

请联系QQ 66388855
TEL 15823138881
Mail:stsofts@163.com

完整源代码和OEM是有偿的,希望大家能相互理解劳动是需要花费精力的。
lao_bulls 2010-05-09
  • 打赏
  • 举报
回复
还有代码没有上传。
sunfor 2010-05-08
  • 打赏
  • 举报
回复
我用的是11.5,转换时有如下错误!
---------- Migrating of target im_client
Inspecting application dependencies...
Creating type D:\pbqq\Client\im_client.pbl(d_hy_list)...
Creating type D:\pbqq\Client\im_client.pbl(d_chat_show)...
Creating type D:\pbqq\Client\im_client.pbl(d_ry_list)...
Creating type D:\pbqq\Client\im_client.pbl(d_chat_history)...
Creating type D:\pbqq\Client\im_client.pbl(im_client)...
Creating type D:\pbqq\Client\im_client.pbl(w_login)...
Creating type D:\pbqq\Client\im_client.pbl(w_chat)...
Creating type D:\pbqq\Client\im_client.pbl(vuo_navigation_item)...
Creating type D:\pbqq\Client\im_client.pbl(vuo_navigation)...
Creating type D:\pbqq\Client\im_client.pbl(w_cs)...
Creating type D:\pbqq\Client\im_client.pbl(str_chatwin)...
Creating type D:\pbqq\Client\im_client.pbl(gf_connect_local)...
Creating type D:\pbqq\Client\im_client.pbl(gf_getip2)...
Creating type D:\pbqq\Client\im_client.pbl(gf_readsys)...
Creating type D:\pbqq\Client\im_client.pbl(m_pop)...
Creating type D:\pbqq\Client\im_client.pbl(gf_connect_msg)...
Creating type D:\pbqq\Client\im_client.pbl(m_chat_sendfs)...
Rebuilding type ( pass 1 ) D:\pbqq\Client\im_client.pbl(d_hy_list)...
Rebuilding type ( pass 1 ) D:\pbqq\Client\im_client.pbl(d_chat_show)...
Rebuilding type ( pass 1 ) D:\pbqq\Client\im_client.pbl(d_ry_list)...
Rebuilding type ( pass 1 ) D:\pbqq\Client\im_client.pbl(d_chat_history)...
Rebuilding type ( pass 1 ) D:\pbqq\Client\im_client.pbl(im_client)...
Rebuilding type ( pass 1 ) D:\pbqq\Client\im_client.pbl(w_login)...
Rebuilding type ( pass 1 ) D:\pbqq\Client\im_client.pbl(w_chat)...
Rebuilding type ( pass 1 ) D:\pbqq\Client\im_client.pbl(vuo_navigation_item)...
Rebuilding type ( pass 1 ) D:\pbqq\Client\im_client.pbl(vuo_navigation)...
Rebuilding type ( pass 1 ) D:\pbqq\Client\im_client.pbl(w_cs)...
Rebuilding type ( pass 1 ) D:\pbqq\Client\im_client.pbl(str_chatwin)...
Rebuilding type ( pass 1 ) D:\pbqq\Client\im_client.pbl(gf_connect_local)...
Rebuilding type ( pass 1 ) D:\pbqq\Client\im_client.pbl(gf_getip2)...
Rebuilding type ( pass 1 ) D:\pbqq\Client\im_client.pbl(gf_readsys)...
Rebuilding type ( pass 1 ) D:\pbqq\Client\im_client.pbl(m_pop)...
Rebuilding type ( pass 1 ) D:\pbqq\Client\im_client.pbl(gf_connect_msg)...
Rebuilding type ( pass 1 ) D:\pbqq\Client\im_client.pbl(m_chat_sendfs)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(d_hy_list)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(d_chat_show)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(d_ry_list)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(d_chat_history)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(im_client)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(w_login)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(w_chat)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(vuo_navigation_item)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(vuo_navigation)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(w_cs)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(str_chatwin)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(gf_connect_local)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(gf_getip2)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(gf_readsys)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(m_pop)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(gf_connect_msg)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(m_chat_sendfs)...
Inspecting application dependencies...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(d_hy_list)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(d_chat_show)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(d_ry_list)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(d_chat_history)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(im_client)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(w_login)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(w_chat)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(vuo_navigation_item)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(vuo_navigation)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(w_cs)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(str_chatwin)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(gf_connect_local)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(gf_getip2)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(gf_readsys)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(m_pop)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(gf_connect_msg)...
Rebuilding type ( pass 2 ) D:\pbqq\Client\im_client.pbl(m_chat_sendfs)...
Regenerating D:\pbqq\Client\im_client.pbl(d_hy_list)...
Regenerating D:\pbqq\Client\im_client.pbl(d_chat_show)...
Regenerating D:\pbqq\Client\im_client.pbl(d_ry_list)...
Regenerating D:\pbqq\Client\im_client.pbl(d_chat_history)...
Regenerating D:\pbqq\Client\im_client.pbl(im_client)...
Regenerating D:\pbqq\Client\im_client.pbl(w_login)...
Regenerating D:\pbqq\Client\im_client.pbl(w_chat)...
Regenerating D:\pbqq\Client\im_client.pbl(vuo_navigation_item)...
Regenerating D:\pbqq\Client\im_client.pbl(vuo_navigation)...
Regenerating D:\pbqq\Client\im_client.pbl(w_cs)...
Regenerating D:\pbqq\Client\im_client.pbl(str_chatwin)...
Regenerating D:\pbqq\Client\im_client.pbl(gf_connect_local)...
Regenerating D:\pbqq\Client\im_client.pbl(gf_getip2)...
Regenerating D:\pbqq\Client\im_client.pbl(gf_readsys)...
Regenerating D:\pbqq\Client\im_client.pbl(m_pop)...
Regenerating D:\pbqq\Client\im_client.pbl(gf_connect_msg)...
Regenerating D:\pbqq\Client\im_client.pbl(m_chat_sendfs)...
16 Errors.
加载更多回复(18)
即时通讯二次开发包,P2P语音视频文件文件组件 2.80 高性能C++/C即时通讯开发平台 PRTX SDK (一)即时通讯开发所面临的问题 下载试用 根据纵横多年在即时通讯方面的经验和客户案例,即时通讯的文字部分可以用 Socket 简实现,满足几十人上百人的文字通讯,但若要商用,或者在互联网上运营,则不能这样简设计。这样的系统对服务器和带宽的资源消耗比较高,这种系统在局域网内可以接受,但若用于互联网时,系统运行会碰到瓶颈。因此 IM 系统需要专门的通讯协议和尽可能的使用 P2P 架构。PRTX SDK 就是给您一个专业的 IM 通讯架构,您无需要考虑 IM实现细节、通讯和服务器的性能部分,只需要考虑您自己的业务系统并且通过简易用接口把 PRTX SDK 融合到您自己的系统中去。在需要发送消息时通过消息发送函数发给任何一个客户端,而在收到消息事件中把收到的消息显示出来。 纵横于2002年开始研发 PRTX SDK,于2004年推出,原名为PRTX。PRTX SDK 是由一套控件和服务器组成,可以让各类使用.net, C++, VB,Delphi,PB,ASP 等开发工具的客户也能快速开发出即时通讯开发,文件传输开发,语音通讯,视频开发,网络电话开发等应用。平台全部由C++开发。   PRTX 开发平台的层次结构 1. P2P通讯协议层(P2P Protocol):这一层封装了最底层的Peer通讯协议,因为TCP耗资源较多,延迟长,而UDP又不可靠,因此需要对Ip进行重新封装。   2、核心层(P2P Core):这一层封装了最根本的东西,包括Peer、对等组、Peer发现、Peer监视和相关的安全原语。   3、服务层(P2P Services):这一层包括对于P2P网络不是必需的、但很通用的功能,如查找、共享、索引、代码缓存和内容缓存的机制。 4、应用层(P2P Application):这一层包括了应用P2P SDK开发出来的完整的P2P应用程序,例如商贸通,等应用程序。 (二)PRTX SDK 组件说明 1. IM 服务器 管理用户寻址 服务器在P2P程序中,起着用户管理的作用,用来管理,验证用户的登录,用户寻址等功能。 服务器的要求 PRTX目前服务器平台运行在Windows平台上,未来将移植为可跨平台,应用于各种Unix, Linux服务器。PRTX服务器应该运行在 P4 以上电脑上,至少有512M内存,以及较快速的硬盘。 数据库服务器 P2P服务器目前使用ODBC与服务器连接,可以支持多种数据库,可以使用客户原来的数据库,由于需要管理用户信息,因此数据中至少需要用户表,用户详细信息表,用户好友表,用户留言表。 2. IM 客户端控件 实现P2P协议,并在此基础上管理用户验证,用户列表下传,添加好友,查找用户,发送点对点消息等。 3. 发送消息文本编辑控件 此控件可以插入表情,编辑字体等。 4. 即时消息显示控件 这个控件用来显示收到的聊天记录,会自动显示格式。 5. 视频控件 此控件显示自己或对方视频,采用H.263压缩。传输所需带宽 8KB 以下。每秒10帧。 6. 语音控件 包含调整喇叭、麦克风音量,设置对方IP地址。 音频codec(支持静音检测、jetter buffer、环境噪音降噪等、静音检测、自动增益控制等) g.729 annex A 8kbps g.711 uLaw/aLaw 64kbps 7. 文件传输控件 此控件用来传输文件,收到及发出的文件会列在文件列表中,双击即可打开文件,而在传输过程中会显示传输进程,并可及时取消。 支持断点续传。 8. BT下载支持(文件共享系统使用) 引入电驴的 BT 下载模块,但会隐藏种子的概念,种子或者地址由服务器端管理,客户端将隐藏。 9. VOIP 网络电话模块 支持 H323 协议,完成Pc2Phone,Pc2Pc的功能。 10. 防火墙穿越lib 此模块文件已经编译到语音,视频,文件,文字模块中。所以,以上语音,视频等都具备防火墙穿越功能。 11. 拷屏控件 此控件可用于选择并拷取屏幕,和文件传输控件配套使用可完成P2P式的拷屏并传输的功能。 12. 网页通 - 无安装 Web 通讯组件(WebIM SDK) PRTX Web通讯组件,提供Web到软件的通讯功能,包括Web端组件,WebIM服务器,可以和PRTX平台无缝集成通讯,提供软件到网页的实时通讯功能。可以开发在线客服等功能。

397

社区成员

发帖
与我相关
我的任务
社区描述
PowerBuilder 非技术版
社区管理员
  • 非技术版社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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