引一個(gè)老師的話:“來網(wǎng)絡(luò)中心不懂網(wǎng)絡(luò)”。的確在這里學(xué)習(xí)了近一年,網(wǎng)絡(luò)的皮毛都沒摸著,慚愧!!甚至汗顏。
做的項(xiàng)目有網(wǎng)絡(luò)的,但一直不屬于我涉及范圍,讓我眼饞羨慕,不過想想自己也不懂,外加也沒個(gè)氛圍,從一開始想,到后面不想,甚至到現(xiàn)在有些懶得不想碰了。也只能說明任何一個(gè)人,大多像我這樣的,不是機(jī)遇沒來找你,而是你與他擦身而過罷了。
今天也閑得發(fā)慌,突然想到了,學(xué)習(xí)一下。
目的:
TCP/IP 所組建網(wǎng)絡(luò)的不同機(jī)器之間利用客戶/服務(wù)器模式建立通信連接。方法:
為建立該連接,開發(fā)人員只要提供一些基本的連接信息,其余由操作系統(tǒng)內(nèi)核來完成。提供哪些信息呢?
以機(jī)器A通過 TCP/IP 與機(jī)器B進(jìn)行網(wǎng)絡(luò)通信為例,對(duì)于機(jī)器A來說我們需要知道如下信息:
1、機(jī)器B的TCP/IP地址:
2、與機(jī)器B中哪一個(gè)進(jìn)程(或軟件系統(tǒng))聯(lián)系。同樣的對(duì)于第一個(gè)我還可以理解,第二個(gè)就不是很清楚。作者緩緩到來,原來使用標(biāo)準(zhǔn)接口的時(shí)候,無須定義,因?yàn)槲覀冎篮驼l進(jìn)行交互,然而使用其它的則沒有那么明了,所以就需要提供第二個(gè)參數(shù)了。
以上兩個(gè)需要提供的參數(shù),在套接字中分別表示為機(jī)器B的地址和機(jī)器B的通信端口。通過在同一機(jī)器的不同通信軟件中定義不同端口地址,來表示機(jī)器A是與機(jī)器B中哪套系統(tǒng)通信。不管是利用何種協(xié)議,完全建立一個(gè)網(wǎng)絡(luò)連接需要五個(gè)基本信息。它們分別是雙方的地址、約定的通訊端口和協(xié)議類型。SOCKET 通信編程接口并不是專門為 TCP/IP 通信提供的,因此套接字通信編程需要在參數(shù)中指明通信協(xié)議類型。套接字是利用客戶/服務(wù)器模式來實(shí)現(xiàn)通信的,客戶端軟件和服務(wù)器端軟件的具體實(shí)現(xiàn)也有所不同。
具體來說,在客戶端利用基于 TCP/IP 和 SOCKET 通信編程的基本步驟是:
① 聲明一個(gè)套接字類型的變量,需要在該變量定義中提供本機(jī) IP 地址和通信端口并指明協(xié)議類型,由于在此介紹的是基于 TCP/IP 的套接字通信,因此協(xié)議類型應(yīng)該是 TCP/IP,在編程接口中該類型用 AF-INET 來表示;
② 向?qū)Ψ桨l(fā)出連接請(qǐng)求,連接時(shí)編程者需要提供對(duì)方 TCP/IP 地址和通信端口,同時(shí) SOCKET 實(shí)現(xiàn)程序自動(dòng)向?qū)μ峁┍緳C(jī) TCP/IP 地址和通信端口;
③ 如果連接成功,會(huì)收到對(duì)方的應(yīng)答信號(hào),這以后的通信就可以通過套接字的相關(guān)操作來實(shí)現(xiàn)了。
步驟:第一步是要聲明一個(gè)套接字類型的變量,并在該變量定義中提供本機(jī)的IP地址、通信端口和協(xié)議類型。
第二步向?qū)Ψ桨l(fā)送連接請(qǐng)求。此時(shí)需要知道對(duì)方的地址和端口,并向?qū)Ψ教峁┑刂泛屯ㄐ哦丝凇?br>
看起來挺簡單的,今年一月份還想做一個(gè)代理服務(wù)器的小程序,一直搞不清楚怎么回事,最后作罷。
努力呀。
學(xué)習(xí)內(nèi)容的來源:
http://zeuscn.net/studio/2007/09/14/tcp-ip-socket/
posted on 2008-08-01 15:09
Sandy 閱讀(1008)
評(píng)論(0) 編輯 收藏 引用 所屬分類:
雜項(xiàng)學(xué)習(xí)