DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: 33227
今日帖子: 17
在线用户: 15
导航: 论坛 -> 网络通讯 斑竹:liumazi,sephil  
作者:
男 qzyejs (qzyejs) ★☆☆☆☆ -
盒子活跃会员
2004/7/11 10:02:41
标题:
如何做类似QQ功能的聊天工具? 浏览:5266
加入我的收藏
楼主: 我用了INDY控件中的TIDUDPServer/TIDUDPClient。服务器端使用UDPServer,并通过ADO与数据库相连,用户登录时通过服务器验证密码,通过后返回登录成功信息给客户端。客户端使用UDPClient.通过ReceivedStrings接收登录信息,登录成功后进行类似QQ的界面。客户端与服务器通讯一切正常。
  但是,我想客户端之间进行收发信息,且不通过服务器进行中转,同时一台机器上还可能运行多个客户端,各客户程序仍可以互相通信,就像QQ一样。
  问题一:可以通过广播方式进行? 在广域网中也可以。
  问题二:如在客户端也放一个UDPServer,那么如何在同一台机器上运行多个这样的程序,远程计算机又该如何与其中一个程序进行通讯呢???
  谢谢!


----------------------------------------------
-
作者:
男 yg200233 (ASD) ★☆☆☆☆ -
普通会员
2004/8/1 0:27:36
1楼: UP 我也很想知道,帮你顶下
----------------------------------------------
-
作者:
男 w66feng (w66feng) ★☆☆☆☆ -
普通会员
2004/8/7 17:01:55
2楼: 我现在做的程序也需要实现着个功能,我也救助了,有进展别忘了高之一下!!!!!!!!!
----------------------------------------------
-
作者:
男 yihuas (奕华) ★☆☆☆☆ -
盒子活跃会员
2004/8/7 19:17:58
3楼: 客户端只用 udpclient 不要使用 udpserver 

当客户端发登陆信息时.服务端可以记下他的端口.这个端口.就是用来通讯用的.
而且这个端口是由系统自动分配.不会重复.
客户端接收时.你要自己写一个线程来

给你们一个例子参考一下.

http://yhsoft.51.net/soft/testudp.zip
----------------------------------------------
http://www.yhsee.com----------奕华软件
作者:
男 banz (Didi)(牛B无罪) ★☆☆☆☆ -
盒子活跃会员
2004/8/13 11:53:04
4楼: try
//打开Port
except
//Port+1
end;
自己调用自己就可以了,这就是多开我的实现方式(不过尽量探测error message 是端口占用的错误ID)

广播是肯定不行的!

Server仅仅提供验证密码,和在线的List 当然也提供 通过服务器中转的功能,
我写的程序 
Server记忆数据有 号码 状态 FaceIndex 设备 姓名  IP Port

Client 号码 动画开关 状态 FaceIndex 设备 姓名 IP Port 消息数量

如果不是服务器中转 基本上是Client对Client Server的功能只是告诉Client其他人员的IP 和Port

Server记忆人员列表是有必要的 这里就分离线消息和隐身消息了:)
也不知道 你明白没明白 呵呵:)

其实我感觉他的通讯很容易写,界面到是比较麻烦!:(可否把你的 界面演示Demo贴出来看看?我写的界面你看看,祝好运 ^o^
----------------------------------------------
         _____  __     __ __ 
        |  __ \|__| __|  |__|
        | |__) |  |/ __  |  |
        |_____/|__|\_____|__|
作者:
男 banz (Didi)(牛B无罪) ★☆☆☆☆ -
盒子活跃会员
2004/8/13 11:56:07
5楼: 我的QQ界面Demo
此帖子包含附件:banz_2004813115452.rar 大小:339.8K
----------------------------------------------
         _____  __     __ __ 
        |  __ \|__| __|  |__|
        | |__) |  |/ __  |  |
        |_____/|__|\_____|__|
作者:
男 tiano20 (蓝宇宙) ★☆☆☆☆ -
盒子活跃会员
2004/11/23 17:44:40
6楼: 想问问qq的数据库是怎么处理的?
----------------------------------------------
-
作者:
男 yongmingok (jacky) ★☆☆☆☆ -
盒子活跃会员
2004/11/24 22:43:48
7楼: eMule VeryCD版是完全自由的GPL软件,用VC++写的,有谁想跟我一起用delphi7.0写一个和eMule一样的

软件。如果想的话,可以和我联系:QQ:178367198 Email:yongmingok@163.com
如果兄弟是C++高手的话,也可以和我一起把VC++的源码转换成delphi。如果大家有兴趣的话,可以下载

一个eMule来看看。一但delphi版的eMule写成的话,我想也把它作为GPL软件在网上发布。如果兄弟觉得

不错的话,可以和联系。由于本人在最近有二个月特别忙,所以做delphi版的eMule将在2005-1-20号后

才开始。
下面是eMule下载网址:http://www.emule.org.cn/download/
----------------------------------------------
-If 咱有钱 Then 每天早上喝两大碗豆浆再吃两个大馒头 Else 努力赚钱-->M$!
作者:
男 xue_wen (学问) ★☆☆☆☆ -
普通会员
2005/7/25 9:20:31
8楼: to (Didi)(牛B无罪):

不知你是怎样在服务器上来区分客户机的?想直接使用端口号是不行的吧!我曾经检测过这个客户机与服务器的连接的端口号,是随机生成的,并且在通信的时候也不是固定不变的,而是以加一的形式增加的!所以,在服务器端用端口来处理与客户机的通信是不行的吧?
不知你使用的是什么控件?是Indy?我用TIdTcpServer!
我想这样在服务器上应该使用多线程的,然后根据在服务器上建立的不同线程对象来区分不同的客户端?但不知怎样去做了,如果您知道,可否赐教,不胜感激阿!
我刚学习这种网络开发,对于很多的东西还不清楚!如果说错的话,请各位原谅!
----------------------------------------------
-
作者:
男 wukailing2005 (桃花岛主) ★☆☆☆☆ -
普通会员
2005/9/10 10:18:12
9楼: 老兄这麻不麻烦啊,要做QQ也不要用那个东西嘛!
用UDP太方面,也可以发文件啊!
----------------------------------------------
-
作者:
男 yhycsb2001 (csb) ★☆☆☆☆ -
普通会员
2005/10/18 16:59:36
10楼: Didi)(牛B无罪:
我的QQ界面Demo 此帖子包含附件:banz_2004813115452.rar 大小:339.8K 
---------- 
         _____  __     __ __ 
        |  __ \|__| __|  |__|
        | |__) |  |/ __  |  |
        |_____/|__|\_____|__| 
----------
你的banz_2004813115452.rar压缩文件中没有源码,能不能给小弟一份,如果您有即时聊天的源代码,就更好啦,小弟的邮箱地址是longing.chen@hotmail.com
----------------------------------------------
csb
作者:
男 bianfuxia888888 (黑色蝙蝠侠) ★☆☆☆☆ -
盒子活跃会员
2005/10/19 13:25:23
11楼: 也给我一份吧

我的email:bianfuxia888888@163.com
----------------------------------------------
-
作者:
男 jackey86888 (jackey) ★☆☆☆☆ -
普通会员
2006/4/28 14:54:07
12楼: 我的QQ号是360092189我们来探讨一下,我觉得你的问题是没有握手协议。
----------------------------------------------
-
作者:
男 chencong5025 (Nicosoft) ▲▲▲△△ -
普通会员
2019/12/20 13:18:36
14楼: 原理就是 UDP打洞

服务端只有在建立聊天的时候 工作 之后就是由客户对客户之间的通信

别问我咋实现 我不会我只知道原理
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2019/12/23 17:55:51
15楼: 这样的软件,俺03年就做了一个。用于聊天、视频会议。纯 Delphi 做的。

除了类似 QQ 的聊天:一对一聊天、群聊天,还有群里直接打开语音或者视频。
另外,还有基于群的电子白板,大家可以在同一个白板上随便贴图画图。
还有文件夹分享,这个功能类似 FTP,你分享一个本地文件夹给一个好友,他可以浏览到文件夹,下载文件(没提供上传功能,要实现也容易)。

文件传输过程,断点自动续传。当年的QQ如果断了,得手动重传。如果半夜传个大文件,两边的人睡觉去了,中途断了,一个晚上白开电脑。不知道现在的QQ传文件是否会自动续传。

两个人之间还可以通过我的软件,建立一个 VPN 连接。连接建立起来,两个人就是一个局域网,有相同的局域网 IP。这样可以利用 WINDOWS 本身的局域网文件夹共享功能等等其它局域网功能了。这个利用了 OpenVPN 的 UDP 通讯,把 OpenVPN 的 UDP 通讯建立在我自己的程序的 UDP 之上。

通讯方式,就是采用 UDP。客户端都用 TIdUDPServer,直接打洞实现 P2P。
采用 UDP 的问题是,UDP 可能会丢包。因此,俺在 UDP 上自己用 DELPHI 实现了一个类似 TCP 的算法,保证不丢包。

为了两边的功能可以直接用函数调用的方式实现而不是解析命令,俺在 UDP 的基础上,实现了一个 WebService,就是修改 Delphi 的 SOAP 框架里面的代码来实现的。

为了聊天窗口里面可以图文并茂,俺自己用 TWebBrowser 实现了一个基于IE浏览器的富文本编辑器。打字聊天的时候,可以直接贴入图片,每个文字都可以拉黑选中后,旋转字体大小颜色等等。这个功能,不知道未来 WINDOWS 上没有 IE 后,会不会代码就失效了。

实现这么多乱七八糟的功能,其实只是为了实现一个 P2P 的东西。P2P通讯架构如果跑好了,可以实现很多有趣好玩或者强大的功能。比如,一个分布式的论坛,比如,一个分布式的卖货平台,比如一个分布式的搜索引擎..........

这么多年,一直想把代码整理好,优化一下,实现一些真正好玩的功能,一直没时间。要忙吃饭的事情嘛。

代码里面很多我自己也不满意的地方,写的时候没啥经验,也赶时间,导致代码很烂,不好意思拿出来给人看。这些年一直想把代码优化好,放一个开源出来,一直没时间整理代码。

当年的代码,为了实现 Unicode,让繁体WINDOWS和简体WINDOWS的人能够文字聊天,用了 TNT 那套控件。现在新的 DELPHI 底下,应该是用不上了。那些代码,要能够在新的 DELPHI 底下编译,需要修改的东西太多。

如果有10个人愿意一起来改代码,我就把它开源出来。
----------------------------------------------
-
作者:
男 nevergrief (孤独骑士) ★☆☆☆☆ -
盒子活跃会员
2019/12/24 5:23:51
16楼: 无限瞻仰楼上的大侠,你到群里开源,别说10个,估计会有100个人报名,实际参加也不止10个啊。
----------------------------------------------
只有偏执狂才能生存!
作者:
男 ysyzqm (ysyzqm) ▲▲▲▲△ -
普通会员
2019/12/24 8:18:59
17楼: 支持15楼,我提供服务器集群
----------------------------------------------
-
作者:
男 hawke2e (hawke2e) ★☆☆☆☆ -
普通会员
2019/12/24 18:10:23
18楼: @pcplayer
一个分布式的论坛,一个分布式的卖货平台,一个分布式的搜索引擎

还差一个核心的东西,流量从哪里来???

我认为未来,流量不会抓在小数大公司的手里
----------------------------------------------
软件是什么,相信很多人都说不清。
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2019/12/25 21:33:59
19楼: 楼上的,流量这个玩意,是集中式的网络才有的。

比如都是网站,京东、淘宝、拍拍,从网络架构上来看,他们是平等的。流量都去了淘宝,是因为知道淘宝的人更多。现在估计没几个人知道拍拍了吧?

然后流量就都去了淘宝。然后,你在淘宝开店,才会有流量哪里来这个概念:淘宝不给你流量,你就啥都不是。

而分布式系统,没人能够控制流量。
----------------------------------------------
-
作者:
男 akay (akay) ★☆☆☆☆ -
普通会员
2019/12/26 9:01:31
20楼: 最近在看go-libp2p,还有个nps,打洞成功率还不高
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行89.84375毫秒 RSS