[ 收藏 ] [ 繁体中文 ]  
臺灣貨到付款、ATM、超商、信用卡PAYPAL付款,4-7個工作日送達,999元臺幣免運費   在線留言 商品價格為新臺幣 
首頁 電影 連續劇 音樂 圖書 女裝 男裝 童裝 內衣 百貨家居 包包 女鞋 男鞋 童鞋 計算機周邊

商品搜索

 类 别:
 关键字:
    

商品分类

  •  管理

     一般管理学
     市场/营销
     会计
     金融/投资
     经管音像
     电子商务
     创业企业与企业家
     生产与运作管理
     商务沟通
     战略管理
     商业史传
     MBA
     管理信息系统
     工具书
     外文原版/影印版
     管理类职称考试
     WTO
     英文原版书-管理
  •  投资理财

     证券/股票
     投资指南
     理财技巧
     女性理财
     期货
     基金
     黄金投资
     外汇
     彩票
     保险
     购房置业
     纳税
     英文原版书-投资理财
  •  经济

     经济学理论
     经济通俗读物
     中国经济
     国际经济
     各部门经济
     经济史
     财政税收
     区域经济
     统计 审计
     贸易政策
     保险
     经济数学
     各流派经济学说
     经济法
     工具书
     通货膨胀
     财税外贸保险类考试
     英文原版书-经济
  •  社会科学

     语言文字
     社会学
     文化人类学/人口学
     新闻传播出版
     社会科学总论
     图书馆学/档案学
     经典名家作品集
     教育
     英文原版书-社会科学
  •  哲学

     哲学知识读物
     中国古代哲学
     世界哲学
     哲学与人生
     周易
     哲学理论
     伦理学
     哲学史
     美学
     中国近现代哲学
     逻辑学
     儒家
     道家
     思维科学
     马克思主义哲学
     经典作品及研究
     科学哲学
     教育哲学
     语言哲学
     比较哲学
  •  宗教

  •  心理学

  •  古籍

     经部  史类  子部  集部  古籍管理  古籍工具书  四库全书  古籍善本影音本  中国藏书
  •  文化

     文化评述  文化随笔  文化理论  传统文化  世界各国文化  文化史  地域文化  神秘文化  文化研究  民俗文化  文化产业  民族文化  书的起源/书店  非物质文化遗产  文化事业  文化交流  比较文化学
  •  历史

     历史普及读物
     中国史
     世界史
     文物考古
     史家名著
     历史地理
     史料典籍
     历史随笔
     逸闻野史
     地方史志
     史学理论
     民族史
     专业史
     英文原版书-历史
     口述史
  •  传记

  •  文学

  •  艺术

     摄影
     绘画
     小人书/连环画
     书法/篆刻
     艺术设计
     影视/媒体艺术
     音乐
     艺术理论
     收藏/鉴赏
     建筑艺术
     工艺美术
     世界各国艺术概况
     民间艺术
     雕塑
     戏剧艺术/舞台艺术
     艺术舞蹈
     艺术类考试
     人体艺术
     英文原版书-艺术
  •  青春文学

  •  文学

     中国现当代随笔
     文集
     中国古诗词
     外国随笔
     文学理论
     纪实文学
     文学评论与鉴赏
     中国现当代诗歌
     外国诗歌
     名家作品
     民间文学
     戏剧
     中国古代随笔
     文学类考试
     英文原版书-文学
  •  法律

     小说
     世界名著
     作品集
     中国古典小说
     四大名著
     中国当代小说
     外国小说
     科幻小说
     侦探/悬疑/推理
     情感
     魔幻小说
     社会
     武侠
     惊悚/恐怖
     历史
     影视小说
     官场小说
     职场小说
     中国近现代小说
     财经
     军事
  •  童书

  •  成功/励志

  •  政治

  •  军事

  •  科普读物

  •  计算机/网络

     程序设计
     移动开发
     人工智能
     办公软件
     数据库
     操作系统/系统开发
     网络与数据通信
     CAD CAM CAE
     计算机理论
     行业软件及应用
     项目管理 IT人文
     计算机考试认证
     图形处理 图形图像多媒体
     信息安全
     硬件
     项目管理IT人文
     网络与数据通信
     软件工程
     家庭与办公室用书
  •  建筑

     执业资格考试用书  室内设计/装潢装修  标准/规范  建筑科学  建筑外观设计  建筑施工与监理  城乡规划/市政工程  园林景观/环境艺术  工程经济与管理  建筑史与建筑文化  建筑教材/教辅  英文原版书-建筑
  •  医学

     中医
     内科学
     其他临床医学
     外科学
     药学
     医技学
     妇产科学
     临床医学理论
     护理学
     基础医学
     预防医学/卫生学
     儿科学
     医学/药学考试
     医院管理
     其他医学读物
     医学工具书
  •  自然科学

     数学
     生物科学
     物理学
     天文学
     地球科学
     力学
     科技史
     化学
     总论
     自然科学类考试
     英文原版书-自然科学
  •  工业技术

     环境科学
     电子通信
     机械/仪表工业
     汽车与交通运输
     电工技术
     轻工业/手工业
     化学工业
     能源与动力工程
     航空/航天
     水利工程
     金属学与金属工艺
     一般工业技术
     原子能技术
     安全科学
     冶金工业
     矿业工程
     工具书/标准
     石油/天然气工业
     原版书
     武器工业
     英文原版书-工业技
  •  农业/林业

     园艺  植物保护  畜牧/狩猎/蚕/蜂  林业  动物医学  农作物  农学(农艺学)  水产/渔业  农业工程  农业基础科学  农林音像
  •  外语

  •  考试

  •  教材

  •  工具书

  •  中小学用书

  •  中小学教科书

  •  动漫/幽默

  •  烹饪/美食

  •  时尚/美妆

  •  旅游/地图

  •  家庭/家居

  •  亲子/家教

  •  两性关系

  •  育儿/早教

  •  保健/养生

  •  体育/运动

  •  手工/DIY

  •  休闲/爱好

  •  英文原版书

  •  港台图书

  •  研究生
     工学
     公共课
     经济管理
     理学
     农学
     文法类
     医学

  •  音乐
     音乐理论

     声乐  通俗音乐  音乐欣赏  钢琴  二胡  小提琴
  • TCP/IP網絡編程原理與技術
    該商品所屬分類:研究生 -> 工學
    【市場價】
    430-624
    【優惠價】
    269-390
    【作者】 鐘輝、臧晗、董潔、宋凱、孟祥宇 
    【所屬類別】 圖書  教材  研究生/本科/專科教材  工學圖書  計算機/網絡  網絡與數據通信  網絡配置與管理 
    【出版社】清華大學出版社 
    【ISBN】9787302526025
    【折扣說明】一次購物滿999元台幣免運費+贈品
    一次購物滿2000元台幣95折+免運費+贈品
    一次購物滿3000元台幣92折+免運費+贈品
    一次購物滿4000元台幣88折+免運費+贈品
    【本期贈品】①優質無紡布環保袋,做工棒!②品牌簽字筆 ③品牌手帕紙巾
    版本正版全新電子版PDF檔
    您已选择: 正版全新
    溫馨提示:如果有多種選項,請先選擇再點擊加入購物車。
    *. 電子圖書價格是0.69折,例如了得網價格是100元,電子書pdf的價格則是69元。
    *. 購買電子書不支持貨到付款,購買時選擇atm或者超商、PayPal付款。付款後1-24小時內通過郵件傳輸給您。
    *. 如果收到的電子書不滿意,可以聯絡我們退款。謝謝。
    內容介紹



    開本:16開
    紙張:膠版紙
    包裝:平裝-膠訂

    是否套裝:否
    國際標準書號ISBN:9787302526025
    叢書名:計算機繫列教材

    作者:鐘輝、臧晗、董潔、宋凱、孟祥宇
    出版社:清華大學出版社
    出版時間:2019年06月 


        
        
    "

    編輯推薦
    1. 從應用互聯網的角度講解網絡編程的基本概念和原理,用實例引出概念,用應用引出方法,用案例引出原理。
    2. 在*基本的、*原始的操作繫統上講解計算機之間的通信過程,使用*原始的進程概念解釋網絡編程的細節和步驟。
    3. 用*易懂的語言輸入輸出功能講解復雜的網絡通信編程原理,用*基本的客戶機服務器概念來概括說明網絡編程的方法和步驟。

     
    內容簡介
    Internet是世界上*的計算機互連網絡,TCP/IP是Internet上使用*為成熟的協議。本書重點介紹用TCP/IP進行編程的主要原理和編程環境,並舉出實例來解釋這些編程原理和概念。
    網絡中*基本的通信基礎是客戶服務器模式,它在計算機通信中占主導地位。本書內容主要包括客戶服務器各部件的功能,還說明了如何構建客戶和服務器軟件。介紹了客戶服務器模式的基本概念,TCP/IP協議提供傳輸數據的基本機制;如何在TCP/IP環境下組織編寫應用程序;計算機網絡通信程序的構建方法;從而進一步了解在網絡環境下構建分布式程序。
    全書共分13章: 第1章著重介紹網絡編程的目標和準備工作;第2章和第3章著重介紹客戶服務器的概念以及並發處理存在的主要問題和應用;第4章和第5章基於Linux操作繫統介紹套接字接口的概念和封裝的繫統調用函數;第6章介紹客戶程序設計方法和需要注意的細節問題;第7章介紹了各種典型服務器的設計方法,需要注意的問題和細節;第8章和第9章介紹單線程編寫並發程序的方法和應用條件;第10~12章介紹多服務、多協議服務器設計方法和並發管理過程;第13章介紹客戶並發設計的方法和使用條件。全書提供了大量應用實例,每章後均附有習題。
    本書適合作為高等院校計算機、軟件工程、信息管理等專業高年級本科生、研究生的教材,也可供對TCP/IP比較熟悉並且對網絡編程有所了解的開發人員、廣大科技工作者和研究人員參考。
    目錄
    目錄
    第1章網絡編程準備1
    1.1TCP/IP技術的因特網應用1
    1.2用TCP/IP構建分布式環境設計應用程序2
    1.3用TCP/IP構建的標準和非標準應用協議2
    1.4使用TCP/IP標準應用協議的例子2
    1.5Telnet連接的例子3
    1.6使用Telnet訪問其他服務4
    1.7TCP/IP應用協議和軟件靈活性5
    1.8從提供者的角度看服務5
    1.9本教材內容介紹6
    1.10小結6
    習題6第2章客戶服務器模式軟件設計概念8
    2.1客戶服務器的起源8目錄
    第1章網絡編程準備1
    1.1TCP/IP技術的因特網應用1
    1.2用TCP/IP構建分布式環境設計應用程序2
    1.3用TCP/IP構建的標準和非標準應用協議2
    1.4使用TCP/IP標準應用協議的例子2
    1.5Telnet連接的例子3
    1.6使用Telnet訪問其他服務4
    1.7TCP/IP應用協議和軟件靈活性5
    1.8從提供者的角度看服務5
    1.9本教材內容介紹6
    1.10小結6
    習題6第2章客戶服務器模式軟件設計概念8
    2.1客戶服務器的起源8
    2.2客戶服務器關鍵問題9
    2.3客戶服務器術語9
    2.3.1客戶和服務器10
    2.3.2服務器特權和復雜性10
    2.3.3標準和非標準客戶軟件10
    2.3.4客戶的參數化11
    2.3.5無連接的和面向連接的服務器11
    2.3.6無狀態和有狀態服務器12
    2.3.7無狀態文件服務器的例子13
    2.3.8有狀態文件服務器的例子13
    2.3.9客戶標識14
    2.3.10無狀態是一個協議問題15
    2.3.11充當客戶的服務器16
    2.4小結16
    習題17第3章客戶服務器模式軟件中的並發處理18
    3.1引言18
    3.2網絡中的並發18
    3.3服務器中的並發19
    3.4並發術語20
    3.4.1進程概念20
    3.4.2局部和全局變量的共享21
    3.4.3過程調用22
    3.5一個創建並發進程的例子22
    3.5.1一個順序執行的C實例22
    3.5.2程序的並發版本23
    3.5.3時間分片24
    3.5.4單線程的進程25
    3.5.5使各進程分離25
    3.6執行新的代碼26
    3.7上下文切換和協議軟件設計27
    3.8並發和異步I/O27
    3.9小結28
    習題28第4章網絡編程協議的程序接口29
    4.1引言29
    4.2不精確指明的協議軟件編程接口29
    4.3接口功能30
    4.4概念性接口的規範30
    4.5操作繫統調用31
    4.6網絡通信的兩種基本方法31
    4.7Linux中提供的基本I/O功能32
    4.8將Linux I/O用於TCP/IP33
    4.9小結33
    習題33第5章接口實現——套接字API35
    5.1引言35
    5.2Berkeley套接字35
    5.3指明一個協議接口35
    5.4套接字的抽像36
    5.4.1套接字描述符和文件描述符36
    5.4.2針對套接字的繫統數據結構37
    5.4.3主動套接字或被動套接字37
    5.5指明端點地址38
    5.6類屬地址結構39
    5.7套接字API中的主要繫統調用40
    5.7.1socket調用40
    5.7.2connect調用40
    5.7.3send調用41
    5.7.4recv調用41
    5.7.5close調用41
    5.7.6bind調用41
    5.7.7listen調用42
    5.7.8accept調用42
    5.7.9在套接字中使用read和write42
    5.7.10套接字調用小結42
    5.8用於整數轉換的實用例程43
    5.9在程序中使用套接字調用44
    5.10套接字調用的參數所使用的符號常量44
    5.11小結45
    習題46第6章客戶軟件算法及編程實例47
    6.1引言47
    6.2不是研究細節而是學習算法47
    6.3客戶體繫結構和要解決的問題48
    6.3.1標識服務器的位置48
    6.3.2分析地址參數49
    6.3.3查找域名50
    6.3.4由名字查找某個熟知端口51
    6.3.5端口號和網絡字節順序51
    6.3.6由名字查找協議51
    6.4TCP客戶算法52
    6.4.1分配套接字52
    6.4.2選擇本地協議端口號53
    6.4.3選擇本地IP地址中的一個基本問題53
    6.4.4將TCP套接字連接到某個服務器54
    6.4.5使用TCP與服務器通信54
    6.4.6從TCP連接中讀取響應55
    6.4.7關閉TCP連接55
    6.5UDP客戶算法56
    6.5.1連接的和非連接的UDP套接字57
    6.5.2對UDP使用connect57
    6.5.3使用UDP與服務器通信57
    6.5.4關閉使用UDP的套接字57
    6.5.5對UDP的部分關閉58
    6.5.6關於UDP不可靠性的警告58
    6.6客戶編程實例的重要性58
    6.7隱藏細節59
    6.8針對客戶程序的過程庫59
    6.8.1connectTCP的實現60
    6.8.2connectUDP的實現60
    6.8.3構成連接的過程61
    6.9過程庫使用63
    6.10DAYTIME服務63
    6.10.1針對DAYTIME的TCP客戶實現64
    6.10.2從TCP連接中進行讀65
    6.11TIME服務66
    6.12訪問TIME服務66
    6.13精確時間和網絡時延67
    6.14針對TIME服務的UDP客戶67
    6.15ECHO服務69
    6.16針對ECHO服務的TCP客戶69
    6.17針對ECHO服務的UDP客戶71
    6.18小結72
    習題74第7章服務器軟件算法及編程實例76
    7.1引言76
    7.2概念性的服務器算法76
    7.3並發服務器和循環服務器76
    7.4面向連接的和無連接的訪問77
    7.5服務器需要考慮的幾個問題77
    7.5.1傳輸層協議的語義77
    7.5.2選擇傳輸協議78
    7.5.3面向連接的服務器78
    7.5.4無連接的服務器79
    7.5.5服務器的故障、可靠性和無狀態80
    7.5.6優化無狀態服務器80
    7.5.7請求處理時間82
    7.6服務器的四種基本類型82
    7.7循環服務器的算法83
    7.8循環的、面向連接的服務器的算法83
    7.8.1用INADDR_ANY綁定熟知端口83
    7.8.2將套接字置於被動模式84
    7.8.3接受連接並使用這些連接84
    7.9循環的、無連接的服務器的算法84
    7.10並發服務器的算法85
    7.11並發的、無連接的服務器的算法86
    7.12並發的、面向連接的服務器的算法86
    7.12.1服務器並發性的實現87
    7.12.2把單獨的程序作為從進程來使用87
    7.13使用單線程獲得表面上的並發性88
    7.14各服務器類型所適用的場合89
    7.15服務器類型小結89
    7.16重要問題——服務器死鎖90
    7.17其他的實現方法90
    7.18循環的、無連接的服務器設計91
    7.18.1創建被動套接字91
    7.18.2進程結構94
    7.18.3TIME服務器舉例94
    7.18.4小結96
    7.19循環的、面向連接的服務器設計96
    7.19.1分配被動的TCP套接字96
    7.19.2用於DAYTIME服務的服務器97
    7.19.3進程結構97
    7.19.4DAYTIME服務器舉例98
    7.19.5關閉連接100
    7.19.6連接終止和服務器的脆弱性100
    7.19.7小結101
    7.20並發的、面向連接的服務器設計101
    7.20.1並發ECHO102
    7.20.2循環與並發實現的比較102
    7.20.3進程結構102
    7.20.4並發ECHO服務器舉例103
    7.20.5清除遊離(errant)進程106
    7.20.6小結106
    7.21小結107
    習題107第8章使用線程模型實現並發110
    8.1引言110
    8.2Linux線程概述110
    8.3線程和進程的關繫111
    8.3.1描述符、延遲和退出111
    8.3.2線程退出112
    8.4線程協調和同步112
    8.4.1互斥112
    8.4.2信號量113
    8.4.3條件變量113
    8.5使用線程的服務器實例114
    8.6監控117
    8.7小結118
    習題118第9章單線程並發服務器設計119
    9.1引言119
    9.2服務器中的數據驅動處理119
    9.3用單線程進行數據驅動處理120
    9.4單線程服務器的線程結構120
    9.5單線程ECHO服務器舉例121
    9.6小結123
    習題124第10章多協議服務器設計125
    10.1引言125
    10.2減少服務器數量的動機125
    10.3多協議服務器的設計125
    10.4進程結構126
    10.5多協議DAYTIME服務器的例子126
    10.6共享代碼的概念129
    10.7並發多協議服務器130
    10.8小結130
    習題130第11章多服務服務器設計132
    11.1引言132
    11.2合並服務器132
    11.3循環的、無連接的、多服務服務器設計132
    11.4循環的、面向連接的、多服務服務器設計133
    11.5並發的、面向連接的、多服務服務器設計134
    11.6並發的、單線程的、多服務服務器的實現135
    11.7從多服務服務器調用單獨的程序135
    11.8多服務、多協議服務器設計136
    11.9多服務服務器的例子137
    11.10靜態的和動態的服務器配置143
    11.11UNIX超級服務器——inetd144
    11.12inetd服務器的例子146
    11.13小結147
    習題148第12章服務器並發性管理149
    12.1引言149
    12.2在循環設計和並發設計間選擇149
    12.3並發等級150
    12.4需求驅動的並發150
    12.5並發的代價150
    12.6額外開銷和時延151
    12.7小時延問題151
    12.8從線程/進程的預分配152
    12.8.1Linux中的預分配153
    12.8.2面向連接的服務器中的預分配153
    12.8.3互斥、文件鎖定和accept並發調用154
    12.8.4無連接的服務器中的預分配155
    12.8.5預分配、突發通信量和NFS155
    12.8.6多處理器上的預分配156
    12.9延遲的從線程/進程分配156
    12.10兩種技術統一的基礎157
    12.11技術的結合157
    12.12小結158
    習題158第13章客戶軟件並發設計160
    13.1引言160
    13.2並發的優點160
    13.3運用控制的動機160
    13.4與多個服務器的並發聯繫161
    13.5實現並發客戶162
    13.6單線程實現162
    13.7使用ECHO的並發客戶的例子163
    13.8並發客戶的執行167
    13.9例子代碼中的並發性169
    13.10小結169
    習題169附錄A繫統調用與套接字使用的庫例程170參考文獻192
    前言
    前言
    隨著Internet的發展,網絡技術已經滲透到人們的生活和工作中。TCP/IP已經成為流行的網絡協議,且還在演變以滿足未來的需要。在速度越來越快的計算機硬件和不斷更新的軟件發展的背後,TCP/IP在任何類型的硬件上都很容易實現和編寫應用程序。網絡作為中樞神經把世界連在一起。也正是因為網絡的出現與發展,編寫網絡應用程序的程序員和工程師也在不斷增加。TCP/IP網絡編程看起來非常簡單,應用程序接口(application program interface,API)十分易懂。即使初學者也可以使用現代高級語言抽像的客戶服務器程序模板來編寫應用程序。但是發現初學者在經歷了初的高效編程之後,在軟件設計細節面前開始停滯不前,同時發現他們編寫的程序正在遭受性能和健壯性的考驗,在靈活使用客戶服務器模式解決應用問題過程中,缺乏對程序運行可靠性、並發控制、容錯等方面的解決方法,造成程序運行不穩定甚至錯誤。網絡編程完全不同於常規的單機編程,每個程序運行都要受網絡上其他在線程序的控制和干擾。網絡編程是一個充滿黑暗角落的領域,一些細節有可能會被錯誤理解。如果停留在高層語言抽像環境裡編程,永遠不能掌握客戶服務器的實質與精髓。本書對TCP/IP網絡編程精細的基本理論和概念進行了分析和介紹,能照亮讀者編程中黑暗的角落並幫助其改正錯誤。前言
    隨著Internet的發展,網絡技術已經滲透到人們的生活和工作中。TCP/IP已經成為流行的網絡協議,且還在演變以滿足未來的需要。在速度越來越快的計算機硬件和不斷更新的軟件發展的背後,TCP/IP在任何類型的硬件上都很容易實現和編寫應用程序。網絡作為中樞神經把世界連在一起。也正是因為網絡的出現與發展,編寫網絡應用程序的程序員和工程師也在不斷增加。TCP/IP網絡編程看起來非常簡單,應用程序接口(application program interface,API)十分易懂。即使初學者也可以使用現代高級語言抽像的客戶服務器程序模板來編寫應用程序。但是發現初學者在經歷了初的高效編程之後,在軟件設計細節面前開始停滯不前,同時發現他們編寫的程序正在遭受性能和健壯性的考驗,在靈活使用客戶服務器模式解決應用問題過程中,缺乏對程序運行可靠性、並發控制、容錯等方面的解決方法,造成程序運行不穩定甚至錯誤。網絡編程完全不同於常規的單機編程,每個程序運行都要受網絡上其他在線程序的控制和干擾。網絡編程是一個充滿黑暗角落的領域,一些細節有可能會被錯誤理解。如果停留在高層語言抽像環境裡編程,永遠不能掌握客戶服務器的實質與精髓。本書對TCP/IP網絡編程精細的基本理論和概念進行了分析和介紹,能照亮讀者編程中黑暗的角落並幫助其改正錯誤。
    通過本書的介紹,讀者會透徹理解網絡編程的許多難點。本書詳細介紹了客戶服務器編程的所有細節。通過對這些細節的理解,讀者將獲得相應的知識,即網絡協議的內部工作機制如何與應用程序交互。因而對那些以前看起來令人困惑的程序行為就會變得很容易理解,解決問題的辦法就會變得很清晰。本書面向套接字的網絡編程學習者,隻要掌握基礎的C語言編程實例和概念,就能掌握基本的客戶服務器編程細節,更能方便在學習了C 之後,掌握面向對像高級封裝環境的網絡編程過程。掌握相關的網絡協議知識以及操作繫統的基礎知識將有助於客戶服務器編程。本書針對網絡編程的初學者,首先強調基本概念和原理的掌握,加強所有章節示例的可讀性,然後纔考慮代碼的優化問題。本書適合所有希望學習Linux的網絡編程的讀者。Linux操作繫統是早期的網絡編程環境,對於該環境的掌握就不難了解Windows環境的網絡編程,因為Windows操作繫統的網絡編程環境也是來自於UNIX操作繫統的移植,所以使用任何操作繫統都不會有問題。網絡編程的特點決定了同時學習兩種操作繫統平臺的網絡編程是有效的學習方法。不必為學習本書的內容而特意掌握Linux和Windows兩種操作繫統的操作方法,隻需要了解各自的編譯方法即可。本書主要介紹了Linux平臺下的套接字函數和調用方法,所有示例程序都是在Linux平臺下實現的。
        作為一名長期從事計算機網絡相關課程教學的教師,作者一直在考慮這樣一個問題: 怎樣用有限的課堂教學時間為學生繫統地講授網絡編程的基本概念、基本原理和應用?教材是教學過程中使用的主要資料,是教與學的主要內容依據,所以一本好的教材應科學、合理地覆蓋本門課程的知識,具有嚴謹的總體結構和章節安排,內容應詳略得當且能夠突出重點。同時,編寫教材的人員也應該注意本門課程與操作繫統、C語言課程之間的聯繫,解決好課程之間的銜接。作者認為編寫網絡編程教材應有如下的要求: ,應具備豐富的實踐經驗,對自己的專業有深刻的理解;第二,應具備豐富的教學經驗,能夠把握學生的學習規律,並力求將深奧的理論敘述和講解簡單化;第三,應具備對知識的歸納和總結能力,並具有良好的寫作功底,能夠將知識闡述得準確、清晰。一本好的教材必須經過精心規劃和設計。本書在出版前其內容已經在多年的教學過程中講授過,作者對內容進行了多次調整和增減,增加了大量易於操作和實驗內容。
    本書的內容特色是在介紹每一類服務器算法時都增加了配套的示例和講解過程,並配有源代碼和運行結果。讓讀者可以通過代碼運行理解客戶服務器算法的實現過程,了解客戶服務器的結構。尤其是通信代碼的交互過程,它是網絡編程的難點所在,特意強調在各種應用過程中使用套接字通信交互的理解和使用。其次強調了並發服務器的編寫,它也是服務器編寫的難點之一。
    本書共分為13章: 第1~5章主要介紹網絡編程的主要概念——客戶服務器、並發程序、套接字接口及其API;第6章介紹客戶編程的基本概念和存在的主要問題,舉出實例講解客戶編程的一般方法,隱藏細節的過程庫,重點介紹了TCP和UDP的客戶編程;第7章介紹服務器編程的基本概念和需要解決的問題,舉例說明四大類服務器編寫的代碼示例,重點說明並發服務器的設計方法;第8章和第9章介紹單線程實現並發程序的設計及其應用場景;第10~12章介紹多服務、多協議服務器設計方法和原理,以及並發性管理;第13章介紹客戶並發設計的原理和應用場景。
    在本書的編寫過程中,得到教學團隊同事的大力支持和幫助,借此機會向他們表示衷心的感謝!本書由鐘輝統籌全書章節內容和框架,並校對所有章節內容。第1~5章由董潔、臧晗編寫,並進行了代碼實驗操作驗證,總結實驗步驟和遇到的問題;第6章和第7章由鐘輝編寫,孟祥宇、高野編寫實例代碼進行實驗驗證,總結實驗代碼所遇到的問題;第8章和第9章由宋凱、孟祥宇編寫,高野進行了代碼實驗驗證;第10~12章由鐘輝、董潔編寫,臧晗編寫實例代碼進行實驗驗證,並總結出現的問題。
    計算機軟硬件與互聯技術發展迅速,限於作者的學識和時間,本書難免有錯誤與不妥之處,懇請讀者批評指正,作者將萬分感謝。

     編者2018年8月於瀋陽
    在線試讀
    第5章接口實現——套接字API〖1〗5.1引言第4章描述了應用程序和TCP/IP軟件之間的接口,還說明了在大多數繫統中如何使用繫統調用機制,將控制權傳送給操作繫統中的TCP/IP軟件。還回顧了UNIX所提供的6個基本I/O函數:open、close、read、write、lseek和ioctl。本章將詳細描述套接字API,並說明這些函數是如何與UNIX I/O函數集成到一起的。還涉及一些通用概念,並給出每個調用的使用方法。後面幾章將說明客戶和服務器是怎樣使用這些調用的,並提供了一些說明許多細節的例子。
    5.2Berkeley套接字
    在20世紀80年代早期,遠景研究規劃局(Advanced Research Projects Agency,ARPA)資助了加利福尼亞大學伯克利分校的一個研究組,讓它們將TCP/IP軟件移植到UNIX操作繫統中,並將結果提供給其他網點。作為項目的一部分,設計者們創建了一個接口,應用進程使用這個接口可以進行通信。他們決定,隻要有可能就使用已有的繫統調用,對那些不能方便地使用已有函數集的情況,再增加新的繫統調用以支持TCP/IP功能。這樣就出現了套接字API (socket API)或套接字接口,這個繫統被稱為Berkeley UNIX或BSD UNIX。TCP/IP首次出現於BSD 4.1版本(release 4.1 of Berkeley Software Distribution);本書所描述的套接字函數來自BSD 4.4版本。
    由於許多計算機廠商,尤其是像Sun Microsystem、Tektronix及Digital這樣的工作站制造商,采用了Berkeley UNIX,於是在許多計算機上都可以使用套接字接口。這樣,套接字接口就已被廣泛采用,以至於成為事實上的標準。微軟公司也接受了這個標準,並為其操作繫統開發了一個相應的實現版本。另外,Linux操作繫統也使用了套接字。
    5.3指明一個協議接口
    在考慮如何在操作繫統中增加功能,使應用程序能夠訪問TCP/IP軟件時,設計者們必須為函數選擇名字,並指明每個函數所帶的參數。為此,他們要決定各函數所提供的服務範圍,以及應用進程以何種方式來使用它們。設計者們還必須考慮,是讓這個接口專門針對TCP/IP,還是使它能為其他協議所用。因此。設計者們必須在下列兩種方法中選擇一個:
     定義專門支持TCP/IP通信的一些函數;
     定義支持一般網絡通信的函數,用參數使TCP/IP通信作為一種特例。這兩種方法的不同之處是很容易理解的,它們會影響到繫統函數的名字以及這些函數所要求的參數。例如,對種方法,設計者可能會把一個繫統函數取名為maketcpconnection;而對第二種方法,設計者也許會創建一個一般性的函數makeconnection並使用一個參數來指明使用TCP。第5章接口實現——套接字API〖1〗5.1引言第4章描述了應用程序和TCP/IP軟件之間的接口,還說明了在大多數繫統中如何使用繫統調用機制,將控制權傳送給操作繫統中的TCP/IP軟件。還回顧了UNIX所提供的6個基本I/O函數:open、close、read、write、lseek和ioctl。本章將詳細描述套接字API,並說明這些函數是如何與UNIX I/O函數集成到一起的。還涉及一些通用概念,並給出每個調用的使用方法。後面幾章將說明客戶和服務器是怎樣使用這些調用的,並提供了一些說明許多細節的例子。
    5.2Berkeley套接字
    在20世紀80年代早期,遠景研究規劃局(Advanced Research Projects Agency,ARPA)資助了加利福尼亞大學伯克利分校的一個研究組,讓它們將TCP/IP軟件移植到UNIX操作繫統中,並將結果提供給其他網點。作為項目的一部分,設計者們創建了一個接口,應用進程使用這個接口可以進行通信。他們決定,隻要有可能就使用已有的繫統調用,對那些不能方便地使用已有函數集的情況,再增加新的繫統調用以支持TCP/IP功能。這樣就出現了套接字API (socket API)或套接字接口,這個繫統被稱為Berkeley UNIX或BSD UNIX。TCP/IP首次出現於BSD 4.1版本(release 4.1 of Berkeley Software Distribution);本書所描述的套接字函數來自BSD 4.4版本。
    由於許多計算機廠商,尤其是像Sun Microsystem、Tektronix及Digital這樣的工作站制造商,采用了Berkeley UNIX,於是在許多計算機上都可以使用套接字接口。這樣,套接字接口就已被廣泛采用,以至於成為事實上的標準。微軟公司也接受了這個標準,並為其操作繫統開發了一個相應的實現版本。另外,Linux操作繫統也使用了套接字。
    5.3指明一個協議接口
    在考慮如何在操作繫統中增加功能,使應用程序能夠訪問TCP/IP軟件時,設計者們必須為函數選擇名字,並指明每個函數所帶的參數。為此,他們要決定各函數所提供的服務範圍,以及應用進程以何種方式來使用它們。設計者們還必須考慮,是讓這個接口專門針對TCP/IP,還是使它能為其他協議所用。因此。設計者們必須在下列兩種方法中選擇一個:
     定義專門支持TCP/IP通信的一些函數;
     定義支持一般網絡通信的函數,用參數使TCP/IP通信作為一種特例。這兩種方法的不同之處是很容易理解的,它們會影響到繫統函數的名字以及這些函數所要求的參數。例如,對種方法,設計者可能會把一個繫統函數取名為maketcpconnection;而對第二種方法,設計者也許會創建一個一般性的函數makeconnection並使用一個參數來指明使用TCP。
    由於Berkeley的設計者想使接口適合多種通信協議,所以使用了第二種方法。實際上,縱觀整個設計,他們提供了超出TCP/IP之外的通用性。他們允許使用多種協議族(family),而把所有TCP/IP協議表示為單個族(PF_INET族)。他們還決定,讓應用程序使用所要求的服務的類型(type of service)來指明操作,而不是指明協議名。因此,應用程序不是去指明它需要一個TCP連接,而是要求使用Internet,協議族的流傳送(stream transfer)類型的服務,可作如下概括:套接字API提供了許多綜合的功能,這些功能支持使用眾多可能的協議進行網絡通信。套接字調用把所有TCP/IP看作一個單一的協議族。這些調用允許程序員指明所要求的服務而不是指明某個特定協議的名字。套接字的整個設計以及它們所提供的通用性從一開始就受到議論。一些計算機科學家認為,通用性是沒有必要的,這隻能使應用程序難於閱讀。而另一些人則認為,讓程序員指明服務的類型而不是指明協議,可使編程容易,因為這樣做使程序員免於了解各種協議族的細節。後,一些TCP/IP的商業廠商則強調更喜歡其他接口,因為,除非有了源代碼,套接字不能加到操作繫統中,而源代碼往往需要一個特定的許可證以及附加的費用。
    5.4套接字的抽像〖*4/5〗5.4.1套接字描述符和文件描述符執行I/O的應用程序需要調用open函數,纔能創建用於訪問文件的文件描述符。如圖51所示,操作繫統將這些文件描述符實現為一個指針數組,這些指針指向內部的數據結構。繫統為每個進程維護一個單獨的文件描述符表。當一個進程打開某個文件後,繫統就將一個指針(指向此文件的內部數據結構)寫入進程的文件描述符表,並將這個表的下標返回給調用者,應用程序隻須記住這個描述符,就可在以後要求對此文件進行操作的調用中使用該描述符。操作繫統將此描述符作為該進程文件描述符表的下標來使用,並沿著指針可找到那個保存文件所有信息的數據結構。
    圖51每個進程(perprocess)的文件描述符表
    套接字接口為網絡通信增加了一個新的抽像,即套接字。就像文件一樣,每個活動的套接字由一個小整數標識,稱為套接字描述符。操作繫統在與文件描述符相同的描述符表中分配套接字描述符。因此,一個應用進程不能擁有具有相同值的文件描述符和套接字描述符。
    操作繫統還有一個單獨的繫統函數socket,應用程序調用它來創建套接字。應用進程隻使用open來創建文件描述符。套接字中所蘊涵的一般性的概念: 單個繫統調用對創建任何套接字都是足夠的。套接字一旦創建後,應用程序必須用其他的繫統調用來指明準確使用此套接字的細節。在研究了繫統所維護的數據結構後,這個範例將變得更清晰。
    5.4.2針對套接字的繫統數據結構
    了解套接字抽像簡單的方法是想像一下操作繫統中的數據結構。當應用進程調用socket後,操作繫統就分配一個新的數據結構以便保存通信所需的信息,並在文件描述符表中填入了一個新的條目,該條目含有指向這個數據結構的指針。例如,圖52說明了在調用socket後,圖51中的描述符表會發生的變化,繫統為socket和其他I/O使用同一個描述符表。在本例中,socket調用的參數指明協議族為PF_INET,服務類型為SOCK_STREAM。
    圖52在調用socket後,操作繫統的概念性的數據結構
    盡管針對套接字的內部數據結構含有許多字段,在繫統創建了套接字後,大多數字段中的值並沒有填上。正如將看到的,在套接字能夠被使用前,創建該套接字的應用程序必須用其他繫統調用把套接字數據結構中的這些信息填上。
    5.4.3主動套接字或被動套接字
    套接字一旦創建,應用程序必須指定如何使用它,套接字本身是完全通用的,可以用來進行任意方式的通信。例如,服務器可以將套接字配置為等待傳入連接,而客戶可以將其配置為發起連接。
    如果服務器將套接字配置為等待傳入連接,就稱此套接字為被動(passive)套接字;反之,客戶用來發起連接的套接字就稱為主動(active)套接字。其要點如下:主動套接字和被動套接字的不同在於應用使用它們的方式;兩種套接字初的創建方式是相同的。5.5指明端點地址
    在創建套接字時,並沒有包含如何使用這個套接字的信息。具體地說,套接字並沒有包含本地/遠程計算機的協議端口號或者IP地址等信息。在應用進程使用一個套接字之前,它必須指明這些地址中的一個或者兩個都指明。
    TCP/IP定義了通信端點,它包括IP地址和協議端口號。其他協議族按照各自的方式定義端點地址。由於套接字抽像適用於多種協議族,所以它既沒有指明如何定義端點地址,也沒有定義一種特定的協議地址格式,而是改為允許每個協議族隨其所願地指明端點。
    為允許協議族自由地選擇其地址表示方式,套接字抽像為每種類型的地址定義了一個地址族。一個協議族可以使用一種或者更多的地址族來定義地址表示方式。TCP/IP各協議都使用一種單一的地址表示方式,其地址族用符號常量AF_INET表示。
















     
    網友評論  我們期待著您對此商品發表評論
     
    相關商品
    在線留言 商品價格為新臺幣
    關於我們 送貨時間 安全付款 會員登入 加入會員 我的帳戶 網站聯盟
    DVD 連續劇 Copyright © 2024, Digital 了得網 Co., Ltd.
    返回頂部