posts - 495,comments - 227,trackbacks - 0
          說明 下一篇
          由于我對TCP稍微熟悉,所以本系列文章只描述socket(套接字)接口的TCP編程

          在IT領(lǐng)域中,大家經(jīng)常聽說Client/Server的概念,這個概念是描述了提供服務(wù)的一方(服務(wù)器)和接受服務(wù)的一方(客戶端)之間的拓撲結(jié)構(gòu)。舉例來說,http://www.vckbase.com這個網(wǎng)站提供大家交流和娛樂的服務(wù),他們的計算機對于我們而言就是服務(wù)器,而我們的計算機則是客戶端。一般而言,服務(wù)器功能比較強大,一個服務(wù)器能提供服務(wù)給多個客戶端。

          對于socket設(shè)計而言,我們往往也提到一個服務(wù)器端和客戶端的概念,但是它的概念和前面而言基本是不一樣的。這里的概念其實是指在開始通訊時誰先發(fā)起連接的過程。

          對于通訊的雙方而言,存在一個建立對話通道的過程,該過程的建立必然是一方主動發(fā)起的。我們稱呼主動建立鏈路的一方為客戶端,而另外一方為服務(wù)器端。(至少我個人這么稱呼,不知道業(yè)界是不是都這么說)

          在通訊過程中,服務(wù)器端必須在某個預(yù)先約定的端口等待其他主機建立鏈路,這個過程稱為偵聽(Listen)。客戶端主動建立鏈路的過程成為連接 (Connect)。當(dāng)服務(wù)器端套接字接到一個連接請求后,會生成一個新的套接字。服務(wù)器端主機就通過這個套接字和客戶端主機通訊。

          在整個過程中,涉及到三個套接字,他們分別是服務(wù)器端套接字(我一般稱呼它為server socket)、客戶端套接字(一般我稱呼它為client socket)和服務(wù)器端套接字創(chuàng)建出來的套接字。在編程過程中,第三種套接字除了不會主動建立鏈路外,功能和client socket完全一致,因此我也把它稱為client socket。為了區(qū)別,對于客戶端的client socket,大家可以稱呼它為主動client socket(Active Client Socket, ACS),而對服務(wù)器端的那個客戶端套接字,則稱為被動client socket(Passive Client Socket, PCS)。一般情況下,我們沒有必要區(qū)分ACS和PCS,因為PCS的功能是ACS的一個部分,ACS只多一項功能而已。在后文中,我將不區(qū)分這兩種 client socket

          對于server socket, 它有如下功能:

          1. 等待客戶端建立連接(listen)
          2. 當(dāng)客戶端建立發(fā)送連接請求時,能接受請求,完成鏈路建立(accept)
          3. 關(guān)閉(close)

          對于client socket,它有如下功能:

          1. 建立鏈路(connect)
          2. 發(fā)送數(shù)據(jù)(send)
          3. 接收數(shù)據(jù)(recv)
          4. 關(guān)閉(close)

          一個簡單的通訊過程應(yīng)該這樣:

          • server socket開始偵聽(listen)
          • client socket開始連接(connect)
          • server socket接受連接(accept)
          • ACS和PCS開始互相發(fā)送數(shù)據(jù)(send/recv)
          • ACS或PCS關(guān)閉鏈路(close)
          • server socket關(guān)閉(close)

          本系列將根據(jù)以上過程介紹socket編程的方方面面。由于阻塞套接字相對簡單,我會先從阻塞套接字(也就是伯可力套接字)編程開始,之間會穿插一些多線程的知識。很多方面我也沒用過,所以有些東西只能邊試邊寫,和大家探討。

          posted on 2008-07-03 15:15 SIMONE 閱讀(563) 評論(0)  編輯  收藏 所屬分類: C++
          主站蜘蛛池模板: 新龙县| 增城市| 宜君县| 东乌珠穆沁旗| 南华县| 松阳县| 永胜县| 汾西县| 万宁市| 且末县| 新和县| 安吉县| 修武县| 桑植县| 甘泉县| 罗甸县| 康马县| 都匀市| 同仁县| 平南县| 庐江县| 吴江市| 报价| 高阳县| 五家渠市| 开封市| 明水县| 札达县| 通辽市| 大关县| 长子县| 大新县| 卢龙县| 建德市| 炎陵县| 安西县| 彩票| 通河县| 定陶县| 马尔康县| 铁力市|