決定來挑戰:自己寫BBS - Linux

Sarah avatar
By Sarah
at 2015-07-24T11:14

Table of Contents

abcdefghi: telnet要一直佔著tcp connection不放,真的不適合繼續用 07/21 11:13

abcdefghi: http是stateless喜歡佔住tcp或是一次就斷線都可以,serv 07/22 05:02
abcdefghi: er或client可以根據自己的情況選擇最適合的方式,但tel 07/22 05:03
abcdefghi: net就只能永遠佔住tcp來保持自己的state, ssh也是有同 07/22 05:05
abcdefghi: 樣的缺點. 07/22 05:05

abcdefghi: tcp有太多情況會斷線,NAT被reset,手機從3G切到wifi,電 07/23 07:13
abcdefghi: 腦進standby. 如果系統的連線數只有幾百個,那tcp確 07/23 07:18
abcdefghi: 實不怕被佔用,如果是幾萬人的同時在線上,那差異就很大 07/23 07:19
abcdefghi: 了,每個tcp連線OS都要花幾KB的記憶體來維持,一堆沒有在 07/23 07:22
abcdefghi: 動作的連線等於就是白白浪費記憶體,幫你找了別人的實驗 07/23 07:23
abcdefghi: http://0rz.tw/sLMr6 , websocket是不是爛東西要看使 07/23 07:24
abcdefghi: 用的地方,而且websocket並沒有要取代http,而是補足過去 07/23 07:30
abcdefghi: http在雙向傳送資料沒有效率的缺點,在一般的情況下,一 07/23 07:33
abcdefghi: 樣是用http. 07/23 07:49


在命令列打下面這三行指令,再多空一行
把中間的網站改成隨便一個網站

telnet xxxxxxx.com 80
GET / HTTP/1.1
Host: xxxxxxx.com

接著,你應該會看到一堆 html


其他像是 smtp 或是其他一些奇奇怪怪的通訊協議
都可以靠telnet搞定

當然啦,如果定義的傳輸資料是二進制的狀況,那就另當別論了。
但據我所知,大多數的通訊協議都是靠鍵盤能打出來的。



我覺得那些反對的理由以及反對的行為很奇怪

講到 http ,當然不只是連線的狀態以及斷線連線記憶體之類的而已
他還包含了 html css js 之類的解釋以及把html圖形化等等
所以 http 通訊協議是「很肥」的東西
只是因為http這種通訊協議太普及,瀏覽器、server軟體都唾手可得
所以會有http很方便的錯覺

如果有不服的話,可以試著去實作 http 通訊協議以及瀏覽器看看
server端還好
但client端在不用現成的libary的狀況下,應該會寫到死掉
尤其是解釋html然後圖形化的部份

當然有人可能會講http也可以傳json或是xml、圖片等等
但問題是,絕大多數的狀況都是html吧?

但telnet不一樣,telnet很單純的是就是把字元顯示在螢幕上
把打的字傳到server
頂多加上上色而已
那個很適合拿來當作寫網路程式的新手或是初學者的練習用作業



但簡單或複雜又怎麼樣呢?
如果真的寫過 socket 的server、client
就會發現最底層也不過就是那個樣子
至於最上面寫的,哪個好哪個不好的理由,其實都很虛幻

比起那些,在自己開發的軟體間的連線下,我比較喜歡自定通訊協議
那麼愛斷線就斷線
要維持住連線就維持住連線
要stateless就stateless
要效率也可以很有效率

還有,以自己的經驗,在多數狀況下,我會希望client端保持連線
而不是每傳輸一次資料就斷開



--
Tags: Linux

All Comments

Barb Cronin avatar
By Barb Cronin
at 2015-07-27T22:55
telnet要一直佔著tcp connection不放,真的不適合繼續用
Yedda avatar
By Yedda
at 2015-07-30T10:01
http是stateless喜歡佔住tcp或是一次就斷線都可以,serv
Thomas avatar
By Thomas
at 2015-07-31T04:04
er或client可以根據自己的情況選擇最適合的方式,但tel
Mary avatar
By Mary
at 2015-08-02T02:29
net就只能永遠佔住tcp來保持自己的state, ssh也是有同
樣的缺點.
Doris avatar
By Doris
at 2015-08-02T18:30
tcp有太多情況會斷線,NAT被reset,手機從3G切到wifi,電
Jacob avatar
By Jacob
at 2015-08-05T21:39
腦進standby. 如果系統的連線數只有幾百個,那tcp確
Lydia avatar
By Lydia
at 2015-08-07T12:04
實不怕被佔用,如果是幾萬人的同時在線上,那差異就很大
Regina avatar
By Regina
at 2015-08-12T04:56
了,每個tcp連線OS都要花幾KB的記憶體來維持,一堆沒有在
Andrew avatar
By Andrew
at 2015-08-15T04:30
動作的連線等於就是白白浪費記憶體,幫你找了別人的實驗
Lily avatar
By Lily
at 2015-08-16T16:36
http://0rz.tw/sLMr6 , websocket是不是爛東西要看使
Andy avatar
By Andy
at 2015-08-16T23:17
用的地方,而且websocket並沒有要取代http,而是補足過去
Cara avatar
By Cara
at 2015-08-20T13:05
http在雙向傳送資料沒有效率的缺點,在一般的情況下,一
William avatar
By William
at 2015-08-24T04:23
樣是用http.
Puput avatar
By Puput
at 2015-08-28T08:44
如果我學的沒出錯,保持連線遠比建立連線要輕鬆容易
Margaret avatar
By Margaret
at 2015-08-29T10:13
當然可以做到混合是最好的,尤其是現在頻寬跟過去相比大上許多
Michael avatar
By Michael
at 2015-09-01T04:28
為了做到stateless,每次連線所送的session在現今網路可被忽略
Blanche avatar
By Blanche
at 2015-09-02T13:03
HTTP/2 新特性 HTTP pipelining表示:發展倒退中???
Linda avatar
By Linda
at 2015-09-07T08:14
阿~要加上HTTP persistent connection
Michael avatar
By Michael
at 2015-09-11T23:36
然後是multiplexing
Rosalind avatar
By Rosalind
at 2015-09-12T06:02
小弟看過jserv大大實作的簡易http server
真的覺得http超級麻煩Orz
Victoria avatar
By Victoria
at 2015-09-12T10:25
http server端應該比client簡單很多
Sierra Rose avatar
By Sierra Rose
at 2015-09-13T04:56
client端感覺像就在做編譯器啊...
Quanna avatar
By Quanna
at 2015-09-14T09:31
我講的telnet是指 rfc 854, 不是 telnet 這個程式
Jake avatar
By Jake
at 2015-09-17T10:44
我講的 http 是指 rfc2616, 不是指web browser和server
Daph Bay avatar
By Daph Bay
at 2015-09-18T20:01
手寫簡單的http server讓常見的browser連線,或是手寫簡
單的browser去連常見的網站我也做過, 事情就事論事就可
Odelette avatar
By Odelette
at 2015-09-21T16:59
以, 不需要執疑對方的經驗. 自定protocol是不錯的選擇,
Edith avatar
By Edith
at 2015-09-25T21:58
但是最好先對既有作法的優缺點都分析清楚後再定比較好.
Blanche avatar
By Blanche
at 2015-09-30T20:18
花了5分鐘左右google並測試一個簡單的http server, 全
部 187 行 c code, http://0rz.tw/CYzsE
Noah avatar
By Noah
at 2015-10-04T22:07
用c寫沒什麼了不起,用 ps 寫才厲害:
Skylar DavisLinda avatar
By Skylar DavisLinda
at 2015-10-05T06:26
http://www.pugo.org:8080/
Gilbert avatar
By Gilbert
at 2015-10-05T23:42
行數差不多。XD
Ursula avatar
By Ursula
at 2015-10-07T05:04
寫RESTful不好嗎 別自己造輪子...
Necoo avatar
By Necoo
at 2015-10-11T21:26
學習、練習的時候,自己造輪子是必要的。實戰另議!
當大家都被現成的框架框住時,就代表不會進步了!

用 USB 安裝 linux 失敗

Doris avatar
By Doris
at 2015-07-24T11:01
如果可能的話,請不要在 Windows 上面使用 UNetbootin 來產生 USB 安裝碟 因為 UNetbootin 會修改 ISO 當中 GRUB config 的內容 如果電腦是使用 UEFI BIOS 的話,可以直接用 7-ZIP 之類的軟體將 ISO 內容解開 到已經有 FAT32 檔案系統的 ...

for loop與if 判斷檔案搭配的問題

Lily avatar
By Lily
at 2015-07-24T08:31
各為前輩好 小弟我目前再思考一個問題 目前有一個重複性的工作(XWD拍照)會儲存成一個檔案 但是此檔案不能被覆蓋 想使用if (-f $file)判斷此檔案存在後 會自動在檔名後增加一個數字另存 重複性不一定 可能 這一次2次 $file-1 $file-2 某一次3次 $file-1 $file-2 $fi ...

急救 無線網路連線

Poppy avatar
By Poppy
at 2015-07-23T10:54
我用的版本是debian testing 剛剛軟體更新完以後 發現系統匣裡的無線網路連線設定程式不見了 去/var/log/aptitude 裏面找才發現 原來 libnetworkmanagerqt1 被移除掉了 然後另外裝上了 libkf5networkmanagerqt6 系統匣裡或者面板裡都沒看到替 ...

PDF 中文顯示問題

Oliver avatar
By Oliver
at 2015-07-23T08:11
※ 引述《a07051226 (葡萄糖)》之銘言: : 抓了高鐵的PDF : 中文不能顯示 : http://i.imgur.com/4T3Rsiy.png : 但是另一份又可以檢視 : http://i.imgur.com/G0AOonZ.png : 在chromium上開又都沒有問題 : 應該不會缺字體吧 ...

在 GNU/Linux 系統上使用指令來燒錄光碟的一些心得

Ethan avatar
By Ethan
at 2015-07-22T23:00
完整訊息版:http://fourdollars.blogspot.tw/2015/07/gnulinux.html 首先是 dvd+rw-mediainfo 這個指令可以用來檢查光碟機裡面到底是放著哪一種光碟片。 andgt; dvd+rw-mediainfo /dev/sr0 另外使用 wodim ...