設計一個雙向溝通即時知道對方狀態的伺服器
下午想了又想....想了又想....先畫了這張圖...
我的需求是建立一個 雙向溝通的 即時知道對方狀態的伺服器
我先把想法畫成一張圖.....
http://bbs.ecstart.com/php_tech/arc5.jpg
1 會走向 2 也會走向 3 如果往 3 走上去 會走向 4 跟 5 .
如果停在 5 上面 則 5 跟 6 會不停的去讀取 Vector OR MAP 的內容 , 判斷要發送 TCP 給那些人.
如果都處理完了 6 就會走回 4 再走回 1,2,3,4 那二圈.
讓 5,6 會因為 使用者共同組織了一個組織 在裡頭時才會不停的把 TCP 送給 5,6 迴路的人.
讓 5,6 迴路的人可以互相即時知道對方的動態........
提供參考....
有什麼好的建議~~請多多建議~~謝謝~~
PS : 就是不想用 UDP 封包 做才想破頭... >_<" 別建議我用 UDP 做...
本帖最后由 fiendcly 于 2012-08-29 06:54 编辑
這個板沒有 TCP 的專業人士嗎.......
畫圈圈中~~~
没看到图 duanjigang 发表于 2012-08-31 07:29 static/image/common/back.gif
没看到图
可能是你們繞不到台灣的機房.
昨天實驗了一下
5,6 群組的楖念~會造成~3 , 4被影響 .
如果想要 5,6 / 3,4 都有在做
而且 3,4 是一個由 CLIENT 個人發動個人讀取的 開關.
5,6 則是共享在一個 群組 讀取 3,4 的行為來決定要發動給這群組相關的人.
解法我能想到的只有二種~~
FORK 取用 共用 記憶體. SHM ( LINUX KERNEL 層的一個技巧 )
THREAD 共用資源 開 THREAD 出來跑~~
後來我選用 THREAD , 這樣可移值性會高一點~ 1、2、3为读事件,放一起维护。
读完一次完整数据,当一个job,扔给线程池。
线程池里边是job的逻辑。
5、6、4为一起维护,为写事件。
逻辑作完,就触发一个写事件。
如果你的业务简单,并发量低,单线程都可以搞定。
epoll,select,IOCP这些了解吗?
C++:libevent等
Java:netty,NIO 自己读lighttpd/nginx/memcached源码, 网络开发能力基本就到头了.
问了白问.
不想写就考虑XMPP(JABBERD2) 本帖最后由 fiendcly 于 2012-09-21 08:39 编辑
@@" 這專案我己經全部寫完了.
架構圖也改了很多...
後來又做了 群組TCP廣撥和同房間資訊互通 還有 二個 TCP SERVER 互相溝通並且廣撥到另一個TCP SERVER 的功能.
謝謝大家熱情回答..
本帖最后由 fiendcly 于 2012-09-21 08:42 编辑
linux_c_py_php 发表于 2012-09-20 13:50 static/image/common/back.gif
自己读lighttpd/nginx/memcached源码, 网络开发能力基本就到头了.
问了白问.
@@ SOCKET 的應用應該算是最基本的應用.
網路應用的 LAYER 2,3,4 層的應用也很好玩....
L4 層應用應該算是入門不太覺得是到頭了.
页:
[1]