1
zonyitoo 2014-01-04 23:45:08 +08:00 1
简单的即时通信软件就是P2P发数据吧,那要学习一下socket怎么用就好了
最好学一下TCP、UDP之类的协议,还有计算机网络相关的知识 因为P2P聊天有个NAT穿透的问题要解决 http://zh.wikipedia.org/zh-cn/NAT%E7%A9%BF%E9%80%8F |
3
Hector01 2014-01-04 23:58:03 +08:00
局域网下的话可能需要UDP广播来寻找通信的另一方;
发送消息可以加密,使用相关的算法加解密; 其他的楼上也说了 |
5
binux 2014-01-05 00:27:38 +08:00
@jybox 既然有人郑重其事地召唤,零毫秒这个名字看起来也很厉害,去看了下代码
首先,看起来并不是点对点的,嘛,这不是问题,反正你中意的QQ也不是 看起来是用的QT的接口做的通信,而不是自己写的 那么,请问QTcpSocket是拥塞的还是非拥塞的? 如果是拥塞的,你如何防止对方慢速攻击? 如果是非拥塞的,你如何防止爆缓冲? |
7
binux 2014-01-05 00:35:50 +08:00
|
9
RagnarokStack 2014-01-05 01:42:26 +08:00
|
10
jybox 2014-01-05 02:23:53 +08:00
@binux 那个是我差不多两年写的,当时对 C++ 的各种库了解也不多,看到 Qt 能一站式的解决就用 Qt 写了,Qt 的网络库并不是好的选择,这个很显然。
QTcpSocket 是阻塞还是非阻塞?这个问题有点无从回答啊,Qt 有特有的信号槽机制来处理「事件」,至于 QTcpSocket 内部应该是会建线程,同步 OI(没有用 epoll 之类的). 当时真没考虑这么多,后来一直计划着要重写,但是一直也没动手。 |
11
jybox 2014-01-05 02:25:13 +08:00
看错了,是拥塞,这个 QTcpSosket 肯定是没有的,只是很简单的一个 TCP 的封装。
|
12
binux 2014-01-05 02:30:26 +08:00
@jybox 为什么这么提就是因为,我看到你群发消息的时候是挨个send的,那么假如有一个用户很慢,那么就会拖慢所有的用户。
那么,这个零毫秒到底在描述哪方面的特性? |
15
allenforrest 2014-01-05 15:02:11 +08:00
了解一下 XMPP 协议先
|