root@bbs
# gcc –o server server.c
root@bbs
# gcc –o client client.c
root@bbs
# ./server
root@bbs
root@bbs$
gcc -o hello hello.c
好了,現在我們已經擁有這個程式的可執行版本了。如果你直接執行這個程式的話,
會出現下面這樣的結果:
root@bbs#./hello
welcome!
hello! world!
root@bbs
#啊,程式將輸出寫出來了,我們成功了!注意!我們需要的是進行網路上的傳輸操作,
現在我們做到的只能夠在本地給你顯示一些字元而已,我們需要的是能夠傳輸到網路的另
一端。6.12.3 /etc/services 和/etc/inetd.conf 檔案
我們必須通過設定系統的兩個檔案:/etc/services 和/etc/inetd.conf 來對系統進行配置,
從而將我們的hello 程式變成網路可訪問的。
下面我們來看看如何設定/etc/services 及/etc/inetd.conf。
在我們更改系統的/etc/services 檔案前我們先來做乙個測試,以便幫助各位讀者能夠對
它的作用有更清楚的理解。
我們在本地機器上輸入下面的命令:
root@bbs
# telnet localhost hello
hello: bad port number
注意系統給出的錯誤資訊:「hello: bad port number」。因為telnet 命令的第二個引數應
該是想登陸系統的埠,我們給出的hello,系統不知道hello 是什麼埠,所以它說:「錯
誤的埠數字」。
那麼下面我們這樣做:
在/etc/services 中加入以下這一行
hello 20001/tcp
其意義為hello 這項服務是在port 20001、是乙個tcp 連線。
當我們進行到這一步的時候,你可以再試試進行剛才給出「hello: bad port number」錯
誤資訊的操作:
root@bbs
# telnet lcoalhost hello
trying 127.0.0.1...
telnet: unable to connect to remote host: connection refused
資訊變了: unable to connect to remote host: connection refused.
第6 章berkeley 套接字- 201 -
這說明系統已經知道了hello 代表的是哪個埠(以為我們上面在/etc/services 檔案中
指定了hello 是乙個tcp 連線,在20001 埠),但是系統無法和hello 埠建立連線,因為
沒有任何程式在監聽20001 埠來等待連線。
ok,現在我們已經告訴了系統我們的hello 程式使用什麼埠了,可是當我們連線hello
的埠的時候系統還沒有將我們的程式執行.下面:
在/etc/inetd.conf 中加入以下這一行:
goodie stream tcp nowait root /full_goodie_path_name/goodie
各個引數的意義為
l service_name 是需要在系統服務中存在的名稱。
l sock_type 有很多種,大多用的是stream/dgram。
l proto 一般用tcp/udp。
l flags 有wait/nowait。
l user 是您指定該程式要以那乙個使用者來啟動,這個例子中用的是root,如果有
安全性的考量,應該要改用nobody。一般來說,建議您用低許可權的使用者,除非必要,不
開放root 使用權。
l server_path 及args,這是您的服務程式的位置及您所想加入的叄數。
接下來重新啟動inetd
root@bbs
# killall inetd
root@bbs
# inetd
root@bbs
#_這樣我們便建立起乙個port 20001 的hello service。
現在我們來檢驗一下goodie 是否可以執行:
telnet localhost 20001
或telnet your_host_name 20001
或telnet locahost hello
執行結果如下:
trying 127.0.0.1...
connected to localhost.
escape character is 『^)』.
welcome!
hello! world!
root@bbs
樹套樹 線段樹套set
請你寫出一種資料結構,來維護乙個長度為 n 的序列,其中需要提供以下操作 1 pos x,將 pos 位置的數修改為 x。2 l r x,查詢整數 x 在區間 l,r 內的前驅 前驅定義為小於 x,且最大的數 數列中的位置從左到右依次標號為 1 n。區間 l,r 表示從位置 l 到位置 r 之間 包...
一套mysql mysql 命令一套
mysql mysql h主機位址 u使用者名稱 p使用者密碼 首先開啟dos視窗,然後進入目錄mysqlin,再鍵入命令mysql u root p,回車後提示你輸密碼.注意使用者名稱前可以有空格也可以沒有空格,但是密碼前必須沒有空格,否則讓你重新輸入密碼.如果剛安裝好mysql,超級使用者roo...
初學樹套樹 線段樹套Treap
樹套樹是乙個十分神奇的演算法,種類也有很多 像什麼樹狀陣列套主席樹 樹狀陣列套值域線段樹 zkw 線段樹套 vector 等等。不過,像我這麼弱,當然只會最經典的線段樹套 treap 啦。線段樹我相信大家都會的,treap 可以看一下這篇部落格 簡析平衡樹 二 treap 線段樹套 treap 的思...