首頁 考試吧論壇 Exam8視線 考試商城 網(wǎng)絡課程 模擬考試 考友錄 實用文檔 求職招聘 論文下載
2011中考 | 2011高考 | 2012考研 | 考研培訓 | 在職研 | 自學考試 | 成人高考 | 法律碩士 | MBA考試
MPA考試 | 中科院
四六級 | 職稱英語 | 商務英語 | 公共英語 | 托福 | 雅思 | 專四專八 | 口譯筆譯 | 博思 | GRE GMAT
新概念英語 | 成人英語三級 | 申碩英語 | 攻碩英語 | 職稱日語 | 日語學習 | 法語 | 德語 | 韓語
計算機等級考試 | 軟件水平考試 | 職稱計算機 | 微軟認證 | 思科認證 | Oracle認證 | Linux認證
華為認證 | Java認證
公務員 | 報關員 | 銀行從業(yè)資格 | 證券從業(yè)資格 | 期貨從業(yè)資格 | 司法考試 | 法律顧問 | 導游資格
報檢員 | 教師資格 | 社會工作者 | 外銷員 | 國際商務師 | 跟單員 | 單證員 | 物流師 | 價格鑒證師
人力資源 | 管理咨詢師考試 | 秘書資格 | 心理咨詢師考試 | 出版專業(yè)資格 | 廣告師職業(yè)水平
駕駛員 | 網(wǎng)絡編輯
衛(wèi)生資格 | 執(zhí)業(yè)醫(yī)師 | 執(zhí)業(yè)藥師 | 執(zhí)業(yè)護士
會計從業(yè)資格考試會計證) | 經(jīng)濟師 | 會計職稱 | 注冊會計師 | 審計師 | 注冊稅務師
注冊資產(chǎn)評估師 | 高級會計師 | ACCA | 統(tǒng)計師 | 精算師 | 理財規(guī)劃師 | 國際內審師
一級建造師 | 二級建造師 | 造價工程師 | 造價員 | 咨詢工程師 | 監(jiān)理工程師 | 安全工程師
質量工程師 | 物業(yè)管理師 | 招標師 | 結構工程師 | 建筑師 | 房地產(chǎn)估價師 | 土地估價師 | 巖土師
設備監(jiān)理師 | 房地產(chǎn)經(jīng)紀人 | 投資項目管理師 | 土地登記代理人 | 環(huán)境影響評價師 | 環(huán)保工程師
城市規(guī)劃師 | 公路監(jiān)理師 | 公路造價師 | 安全評價師 | 電氣工程師 | 注冊測繪師 | 注冊計量師
繽紛校園 | 實用文檔 | 英語學習 | 作文大全 | 求職招聘 | 論文下載 | 訪談 | 游戲
您現(xiàn)在的位置: 考試吧(Exam8.com) > 軟件水平考試 > 復習資料 > 網(wǎng)絡工程師 > 正文

網(wǎng)絡工程師考試常用的socket程序解析

  Hey! Socket 編程讓你沮喪嗎?從 man pages 中很難得到有用的信息嗎?你想 跟上時代去做一做          Internet 程序,但是為你在調用 connect() 前的 bind() 的結構而愁眉不展?…
            好了,我現(xiàn)在已經(jīng)來了,我將和所有人共享我的知識了。如果你了解 C 語言并想穿過 網(wǎng)絡編程的沼澤,那么你來對地方了。
            --------------------------------------------------------------------------------
         這個文檔是寫成一個指南,而不是參考書。如果你剛開始 socket 編程并想找一本入門書,那么你是我的讀者。這可不是一本完全的 socket 編程書。
            --------------------------------------------------------------------------------
            平臺和編譯器
            這篇文章中的大多數(shù)代碼都在一臺 Linux PC 上用 GNU 的 gcc 成功編譯過。 而且他們在一臺 HPUX 上用 gcc 也成功編譯過。但是注意,并不是每個代碼 片段都獨立測試過。
            --------------------------------------------------------------------------------
            目錄:
            什么是套接口?
            Internet 套接口的兩種類型
            網(wǎng)絡理論
            struct--要么了解他們,要么等異形入侵地球
            Convert the Natives!
            IP 地址和如何處理他們
            socket()--得到文件描述符!
            bind()--我們在哪個端口?
            connect()--Hello!
            listen()--有人給我打電話嗎?
            accept()--"Thank you for calling port 3490."
            send() 和 recv()--Talk to me, baby!
            sendto() 和 recvfrom()--Talk to me, DGRAM-style
            close() 和 shutdown()--滾開!
            getpeername()--你是誰?
            gethostname()--我是誰?
            DNS--你說“白宮”,我說 "198.137.240.100"
            客戶-服務器背景知識
            簡單的服務器
            簡單的客戶端
            數(shù)據(jù)報 Socket
            阻塞
            select()--多路同步 I/O,酷!
            參考資料
            Disclaimer and Call for Help

            --------------------------------------------------------------------------------


         Internet 套接口的兩種類型
        什么意思?有兩種 Internet 套接口?是的。不,我在撒謊。其實還有很多,但是我可不想 嚇著你。我們這里只講兩種。 Except for this sentence, where I'm going to tell you that "Raw Sockets" are also very powerful and you should look them   up.
       好了,好了。那兩種類型是什么呢?一種是 "Stream Sockets",另外一種是 "Datagram Sockets"。我們以后談到他們的時候也會用到 "SOCK_STREAM" 和 "SOCK_DGRAM"。 數(shù)據(jù)報套接口有時也叫“無連接套接口”(如果你確實要連接的時候用 connect()。) 流式套接口是可靠的雙向通訊的數(shù)據(jù)流。如果你向套接口安順序輸出“1,2”,那么他們將安順序“1,2”到達另一邊。他們也是無錯誤的傳遞的,有自己的錯誤控制。
        有誰在使用流式套接口?你可能聽說過 telnet,不是嗎?他就使用流式套接口。你需要你所輸入的字符按順序到達,不是嗎?同樣,WWW 瀏覽器使用的 HTTP 協(xié)議也使用他們。實際上,當你通過端口80 telnet 到一個WWW 站點,然后輸入 “GET pagename” 的時候,你也可以得到 HTML 的內容。
         為什么流式套接口可以達到高質量的數(shù)據(jù)傳輸?他使用了“傳輸控制協(xié)議 (The Transmission Control   Protocol)”,也叫 “TCP” (請參考 RFC-793 獲得詳細資料。)TCP 控制你的數(shù)據(jù)按順序到達并且沒有錯誤。你也許聽到 “TCP” 是因為聽到過 “TCP/IP”。這里的 IP 是指 “Internet協(xié)議”(請參考 RFC-791.) IP 只是處理 Internet 路由而已。
        那么數(shù)據(jù)報套接口呢?為什么他叫無連接呢?為什么他是不可靠的呢?恩,有這樣的事實:如果你發(fā)送一個數(shù)據(jù)報,他可能到達,他可能次序顛倒了。如果他到達,那么在這個包的內部是無錯誤的。數(shù)據(jù)報也使用 IP 作路由,但是他不選擇 TCP。他使用“用戶數(shù)據(jù)報協(xié)議 (User Datagram  Protocol)”,也叫 “UDP” (請參考 RFC-768.)
         為什么他們是無連接的呢?主要原因是因為他并不象流式套接口那樣維持一個連接。 你只要建立一個包,在目標信息中構造一個 IP頭,然后發(fā)出去。不需要連接。應用程序有: tftp, bootp 等等。
        “夠了!”你也許會想,“如果數(shù)據(jù)丟失了這些程序如何正常工作?”我的朋友,每個程序在 UDP 上有自己的協(xié)議。例如,tftp協(xié)議每發(fā)出一個包,收到者發(fā)回一個包來說“我收到了!” (一個“命令正確應答”也叫“ACK”     包)。如果在一定時間內(例如5秒),發(fā)送方?jīng)]有收到應答, 他將重新發(fā)送,直到得到 ACK。這一點在實現(xiàn) SOCK_DGRAM應用程序的時候非常重要。
            --------------------------------------------------------------------------------

上一頁  1 2 3 4 5 6 7 8 下一頁
文章搜索
軟件水平考試欄目導航
版權聲明:如果軟件水平考試網(wǎng)所轉載內容不慎侵犯了您的權益,請與我們聯(lián)系800@exam8.com,我們將會及時處理。如轉載本軟件水平考試網(wǎng)內容,請注明出處。