会做和做好是两个完全不同的概念。
各位不是说会做驱动吗?
好啊,berkerly大学现在在研究wifi自组网,大家不是说尽头吗,搞一个出来,让大家手机连手机wifi通讯。
各位不是说会socket编程吗?
好啊,百万请求没秒的服务器,搞一个出来试试。(搞出来拿着去什么新浪搜狐腾讯直接去就行。)
各位不是说会tcp/ip协议栈吗?
搞一个高性能udp交换server出来(qq的核心交换件)。(搞出来直接到腾讯就行。)
各位不是说会做网站吗?
我现在设计的这个网站上半是**,下半是论坛。搞一个出来。
不要看你得到了什么,而要看你能做什么。
各位要是实在觉的没挑战,我出个题:
internet上一种无中心的信息传递方法
by sinan_mil
假想背景:
20**年, C国毒菜组织D对internet进行了严密的监控.
众多网站迫于D的淫威, 清洗了自由民主的呼声.
C国最大的即时聊天软件也清洗了自由民主的言论.
这个时候, 广大的人民需要安全和秘密的通讯解决方案.
分析D的监控:
D投资浩大建立了"功夫网", 以监听C国的每个网民发出每一个字符.
这告诉我们: 通讯必须加密.
D利用其手下暴力机构, 胁迫IT行业实体企业同D合作, 监控C国网民.
这告诉我们: 通讯必须不存在一个中心, 这样才能使D无法找到通讯系统的要害.
我们的目标:
编写一个功能和界面上类似我国QQ的即时通讯(IM)软件, 但此IM软件不能有中心服务器.
基本功能:
添加好友, 好友通讯, 建立群, 群聊, 广播消息(消息散发机制)
本文提出的解决方案: 简单的说: 就是利用email当一块缓存, 完成P2P所需要的信息传递.
假定A和B通讯来说明问题.
A: IP: 10.1.1.1 email: A@A.com
B: IP: 10.1.1.2 email: B@B.com
A想同B联系, A知道B的邮箱为B@B.com
A向B@B.com发了一封加密的信, 其内容为: B,我是A, 我的IP是10.1.1.1, 2000端口开了, 收到联系我.
B检测到有邮件, 读邮件后, 同A建立tcp连接, 说: A,我是B, 我来了.
然后, A和B开始通讯(加密的).
这里有2个重点:1, B的email A必须知道,也就是: 人的ID是一个email地址.
2, 必须有一个程序检测email的到来.POP3协议.
下边我们来看一个好友上线的结构图
+--------------+
| 人1(好友人2) | (取得人2上线email后激活人2图像)
+--------------+
|
/|\ (人2上线email)
|
+---------+ / +--------------+
| email 1 | ---(我上线了 IP: **** )----- | 人2(好友人1) |
+---------+ \ +--------------+
编写这个软件需要的技术:
email的操作, tcp/udp
加密库(这个没玩过)
界面仿qq, 可使用gtk库.
开源发布.
使用人群先锁定论坛.
框架都给你们了,给弄个能用的,1个月弄出来。。。。。。。 |