????? Socket 接口是訪問 Internet 使用得最廣泛的方法。 如果你有一臺(tái)剛配好TCP/IP協(xié)議的主機(jī),其IP地址是202.120.127.201, 此時(shí)在另一臺(tái)主機(jī)或同一臺(tái)主機(jī)上執(zhí)行ftp 202.120.127.201,顯然無法建立連接。因"202.120.127.201" 這臺(tái)主機(jī)沒有運(yùn)行FTP服務(wù)軟件。同樣, 在另一臺(tái)或同一臺(tái)主機(jī)上運(yùn)行瀏覽軟件 如Netscape,輸入"
http://202.120.127.201",也無法建立連接。現(xiàn)在,如果在這臺(tái)主機(jī)上運(yùn)行一個(gè)FTP服務(wù)軟件(該軟件將打開一個(gè)Socket, 并將其綁定到21端口),再在這臺(tái)主機(jī)上運(yùn)行一個(gè)Web 服務(wù)軟件(該軟件將打開另一個(gè)Socket,并將其綁定到80端口)。這樣,在另一臺(tái)主機(jī)或同一臺(tái)主機(jī)上執(zhí)行ftp 202.120.127.201,F(xiàn)TP客戶軟件將通過21端口來呼叫主機(jī)上由FTP 服務(wù)軟件提供的Socket,與其建立連接并對(duì)話。而在netscape中輸入"
http://202.120.127.201"時(shí),將通過80端口來呼叫主機(jī)上由Web服務(wù)軟件提供的Socket,與其建 立連接并對(duì)話。
在Internet上有很多這樣的主機(jī),這些主機(jī)一般運(yùn)行了多個(gè)服務(wù)軟件,同時(shí)提供幾種服務(wù)。每種服務(wù)都打開一個(gè)Socket,并綁定到一個(gè)端口上,不同的端口對(duì)應(yīng)于不同的服務(wù)。Socket正如其英文原意那樣,象一個(gè)多孔插座。一臺(tái)主機(jī)猶如布滿各種插座的房間,每個(gè)插座有一個(gè)編號(hào),有的插座提供220伏交流電, 有的提供110伏交流電,有的則提供有線電視節(jié)目。 客戶軟件將插頭插到不同編號(hào)的插座,就可以得到不同的服務(wù)。
? ?? ?-----
? ???1.什么是socket 所謂socket通常也稱作"套接字",用于描述IP地址和端口,是一個(gè)通信鏈的句柄。應(yīng)用程序通常通過"套接字"向網(wǎng)絡(luò)發(fā)出請(qǐng)求或者應(yīng)答網(wǎng)絡(luò)請(qǐng)求。 以J2SDK-1.3為例,Socket和ServerSocket類庫位于java.net包中。ServerSocket用于服務(wù)器端,Socket是建立網(wǎng)絡(luò)連接時(shí)使用的。在連接成功時(shí),應(yīng)用程序兩端都會(huì)產(chǎn)生一個(gè)Socket實(shí)例,操作這個(gè)實(shí)例,完成所需的會(huì)話。對(duì)于一個(gè)網(wǎng)絡(luò)連接來說,套接字是平等的,并沒有差別,不因?yàn)樵诜?wù)器端或在客戶端而產(chǎn)生不同級(jí)別。不管是Socket還是ServerSocket它們的工作都是通過SocketImpl類及其子類完成的。
???? 2.?常用的Socket類型有兩種:流式Socket(SOCK_STREAM)和數(shù)據(jù)報(bào)式Socket(SOCK_DGRAM)。流式是一種面向連接的Socket,針對(duì)于面向連接的TCP服務(wù)應(yīng)用;數(shù)據(jù)報(bào)式Socket是一種無連接的Socket,對(duì)應(yīng)于無連接的UDP服務(wù)應(yīng)用。