




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、箱爰3刖吞51 socket 的立叉如 3(7理52 支游 socket 的靄仔 至俊62. 1 linux 環(huán)境中的 socket62. 1. 1 linux 的 socket 的提出62. 1.2 linux的socket的工作方式72. 2 windows nt系統(tǒng)環(huán)境中對socket的支持82. 2. 1 winsock (windows socket) 的提出83.2.2 winsock 的原理83. 2. 3 winsock 的通訊方式93 socket科岌3與的鉗怡93. 1 c#中socket編程實現(xiàn)93. 2 delphi 中 socket 的操作方法103. 2. 1 se
2、rversocket 的屬性設(shè)置103.2.2 clientsocket 的屬性104 socket (i tcp a udp紡儀境中的3仆方式104. 1傳輸層的tcp與udp104. 2傳輸層端口與socket114. 3用socket實現(xiàn)基于tcp和udp的原理125 socket卷java徭繹語 < 中的應(yīng)用以氏卑論135. 1 socket在java屮的工作流程135. 2 在 java 中實現(xiàn) socket 通訊145. 2. 1 創(chuàng)建 socket 和 serversocket 對象145.2.2創(chuàng)建服務(wù)器端145.2.3建立客戶端156 q 雄16參考殳獻18基于sock
3、et網(wǎng)絡(luò)通信協(xié)議的應(yīng)用研究摘要:socket簡稱套接字,用于實現(xiàn)網(wǎng)絡(luò)上客戶和服務(wù)器之間的連 接,也就是說網(wǎng)絡(luò)上兩個或兩個以上雙工方式通信的進程之間總有一 個連接,這個連接的端點稱為套接字,套接字是在比較低的層次上通 信的,不同的操作系統(tǒng)對socket有不同的支持方式,不同的開發(fā)工 具,對socket的實現(xiàn)也均不相同,而且socket在tcp與udp兩大協(xié) 議族系中也有各自的工作方式。司:socket;網(wǎng)絡(luò)連接;網(wǎng)絡(luò)通訊study based on the application of socketnetwork communication agreementma wen-chaoabstrac
4、t: socket called socket, for the realization of the network connection between client and server, meaning that two or more network communication duplex mode there is always a connection between the process, known as the set of the connection endpoint received word, the socket is a relatively low lev
5、el in the communications, different operating system support for socket different ways, different development tools, implementation of the socket are not the same, but in the tcp and udp socket two protocol family lines also have their own work.key words: socket; network connection; network communic
6、ation1 刖b隨著網(wǎng)絡(luò)通信技術(shù)的不斷發(fā)展,socket開發(fā)和研究已成為人們關(guān)注的熱點。 socke既適用于同一臺計算機上的進程間通信,也適用于網(wǎng)絡(luò)環(huán)境中的進程間通 信。它已成為當(dāng)前許多操作系統(tǒng)的網(wǎng)絡(luò)api,也是網(wǎng)絡(luò)操作系統(tǒng)中必不可少的基 礎(chǔ)功能。套接字是通信的基本元件,兩個進程為了進行通信,首先必須設(shè)置套接 字。通俗講,套接字相當(dāng)于由其名字連接起來的通信線路的端點,這種連接不僅 適用于本地進程之間的通信,而且也使用語遠地進程之間的通信。用套接字連接 的兩個進程可雙向通信,且兩通信端點的工作方式是不同的,一端須工作于服務(wù) 方,另一端須工作于客戶方。本文從多個方面介紹了 socket的應(yīng)用開發(fā)
7、、實現(xiàn)環(huán)境以及工作流程,并用 java開發(fā)工具在windows nt系統(tǒng)上實現(xiàn)網(wǎng)絡(luò)通訊為例來對socket套接字做了 更加深入的介紹。1 socket的定義和工作原理socket套接字,英文原義是插座的意思,是進程z間通信的抽彖連接點, 可以通過一個形象的例子來理解這個概念,現(xiàn)實生活中的電話是人們聯(lián)系的常用 工具,雙方只耍使用兩部電話機就可以交談,在計算機世界中,兩個程序就是使 用socket進行通信的,一個socket就好比一部電話機,兩個程序在網(wǎng)絡(luò)上通過 一個雙向鏈路進行通信,這個雙向鏈路的每一端就成為一個socketo進程z間要通信,首先要建立各自的socket就像要打電話一定要先有電話
8、 機一樣,打電話時每部電話機都可以說和聽。與此類似,每個socket也都可以 進行讀、寫操作,讀、寫操作時分別要用到socket中的輸入流和輸岀流。建立連接后,客戶程序可以向socket里寫入請求,然后服務(wù)器會處理這個 請求,并把處理結(jié)果通過socket送回。服務(wù)器應(yīng)用程序一般監(jiān)聽一個特定端口 以等待一個客戶的連接請求,當(dāng)一個連接請求到達時,客戶和服務(wù)器建立-個通 信連接。在連接過程中,客戶被分配一個本地端口號并且與一個socket連接, 客戶通過寫sockel來通知服務(wù)器,通過讀socket來獲取信息。類似地,服務(wù)器 也獲取一個木地端口號,它需要一個新的端m號來監(jiān)聽原始端口上的其它連接請 求
9、。服務(wù)器也給它的本地端口連接一個socket,讀寫來自客戶的請求。目前可以使用兩種socket,即流式socket和數(shù)據(jù)報式socketo流式socket 提供了雙向的、有序的、無重復(fù)并h無記錄邊界的數(shù)據(jù)流服務(wù)。tcp即是-種流 式socket協(xié)議;數(shù)據(jù)報式socket支持雙向的數(shù)據(jù)流,但并不保證可靠、有序、 無重復(fù)也就是說,一個以數(shù)據(jù)報式socket接收信息的進程有可能發(fā)送信息重復(fù) 了,或者和發(fā)出的順序不同。數(shù)據(jù)報式socket的一個重要特點是它保留了記錄 邊界。udp即是一種數(shù)據(jù)報式socket協(xié)議。2支持socket的操作系統(tǒng)socket是網(wǎng)絡(luò)通訊的基本元件,所有涉及到tcp/ip應(yīng)用層
10、進程的操作系統(tǒng) 都會對socket有所支持,但不同的操作系統(tǒng)對socket的支持方式均不相同。2. 1 linux 環(huán)境中的 socket2. 1. 1 linux 的 socket 的提出linux操作系統(tǒng)與網(wǎng)絡(luò)聯(lián)系密切,它不僅具有穩(wěn)定、簡易、高效、兼容性好 等特點,并且支持多種網(wǎng)絡(luò)協(xié)議,如ipv4、ipv6、x125、ipx、netbios、ddp等, 因此被廣泛應(yīng)用于網(wǎng)絡(luò)服務(wù)領(lǐng)域。而在linux環(huán)境下開發(fā)出高性能的網(wǎng)絡(luò)通信 程序,也是充分發(fā)揮linux網(wǎng)絡(luò)特性的一個關(guān)鍵因索。在linux系統(tǒng)中,套接 字(socket)是介于應(yīng)用層和傳輸層之間的編程接口,它提供了訪問下層通信協(xié) 議的大量系
11、統(tǒng)調(diào)用和相應(yīng)的數(shù)據(jù)結(jié)構(gòu)功能。套接字接口也是應(yīng)用程序訪問下層網(wǎng) 絡(luò)協(xié)議的惟一方法。具體地講,套接字在用戶級實現(xiàn)了兩個應(yīng)用程序z間的網(wǎng)絡(luò) 連接和數(shù)據(jù)交換,所以linux中的套接字意味著網(wǎng)絡(luò)上的通信。linux套接字在圖2-1 linux套接字的網(wǎng)絡(luò)模型2. 1. 2 linux的socket的工作方式socket在linux中使用的是標(biāo)準系統(tǒng)文件描述符(file descriptor)和其 它程序通信的一種方式。一個套接字描述作為一個通信連接的一端,在一個網(wǎng)絡(luò) 通信連接小的兩端通信程序應(yīng)各自有一個套接字來描述它們自己那一端,不同主 機中的兩個進程通過各自的套接字發(fā)送和接收消息,從而實現(xiàn)了進程間跨網(wǎng)
12、絡(luò)的 通信。linux的套接字支持多種網(wǎng)絡(luò)協(xié)議,不同類型網(wǎng)絡(luò)協(xié)議的工作方式不同, 所使用的地址格式也完全不同。對于各種網(wǎng)絡(luò)協(xié)議而言,使用相同地址格式的 兒個協(xié)議稱為一個協(xié)議地址族,表2-1列岀了套接字的常見地址族。表2-1 linux套接字地址族的主要類型地址族類型對應(yīng)的通信協(xié)議af_netaf_ipxaf_un ixaf_ax25af appletalktcp/ip協(xié)議novell ipx 協(xié)議unix內(nèi)部套接字ax-25協(xié)議套接字appletalkdds (macintosh 機器用)linux將套接字地址族抽象為統(tǒng)一的套接字接口,該接口是應(yīng)用程序的開發(fā) 接口,由各地址族專有的軟件支持。l
13、inux socket支持以下常見套接字類型:(1) sock_stream (數(shù)據(jù)流套接口):提供個面向連接的雙工順序數(shù)據(jù)流傳 輸和??康臄?shù)據(jù)傳輸服務(wù)。這種套接字可以保證數(shù)據(jù)傳輸?shù)目煽啃?,不會出現(xiàn)數(shù) 據(jù)丟失、破損或重復(fù)岀現(xiàn)等差錯,而h通過流量控制可避免發(fā)送的數(shù)據(jù)流超限。 它是最常見的套接字類型,文件傳輸協(xié)議(ftp)即使用流式套接字,internet中 的tcp協(xié)議也支持流套接字。(2) sock_dgram (數(shù)據(jù)報套接口):提供一個無連接和不可靠的雙工數(shù)據(jù)傳輸 服務(wù)。數(shù)據(jù)包以獨立包形式被發(fā)送和接收,不對數(shù)據(jù)的傳輸提供無錯保證,即數(shù) 據(jù)可能被丟失、破壞,也可能被重復(fù)接收。巾lernel中的
14、udp協(xié)議支持這種套 接字。(3)sock_raw (原始套接口):這種類型的套接字允許對低層協(xié)議,如ip或 icmp直接訪問;可以直接填充ip、tcp、udp或者icmp的包頭,發(fā)送用戶自己 定義的tp包或者tcmp包。它主耍用于協(xié)議的開發(fā)。2. 2 windows nt系統(tǒng)環(huán)境中對socket的支持2. 2. 1 winsock (windows socket )的提出90年代初,由microsoft聯(lián)合其他幾家公司共同制定了一,套windows環(huán)境 下的網(wǎng)絡(luò)編程接口,即windows socket規(guī)范。它是berkeley sockets的重要擴 充,主要體現(xiàn)在它增加了一些異步函數(shù)和符合
15、windows消息驅(qū)動特性的網(wǎng)絡(luò)事 件界步選擇機制。windows socket規(guī)范是一套開放的支持多種協(xié)議的windows 下的網(wǎng)絡(luò)編程接口。目前實際應(yīng)用屮的windows sockets規(guī)范主要有11版和 2.0版,其1. 1版只支持tcp/ip協(xié)議,而2.0版支持多協(xié)議,并具有良好的 向后兼容性。目前windows下的internet軟件基本都是基于winsock開發(fā)的。 windows sockets規(guī)范定義并記錄了如何使用apt和internet協(xié)議族(tcp / tp 協(xié)議族)連接,尤其要指出的是所有的windows sockets實現(xiàn)都支持流套接口和 數(shù)據(jù)報套接口。應(yīng)用程序調(diào)用w
16、indows sockets的api實現(xiàn)相互之間的通訊。 windows sockets又利用下層的網(wǎng)絡(luò)通訊協(xié)議功能和操作系統(tǒng)調(diào)用實現(xiàn)實際的通 訊工作。它們之間的關(guān)系如圖2-2所示。圖2-2應(yīng)用程序與windows socket關(guān)系圖3. 2. 2 winsock 的原理socket實際在計算機中提供了一個通信端口,可以通過這個端口與任何一個具有socket接口的計算機通信。應(yīng)用程序在網(wǎng)絡(luò)上傳輸,接收的信息都通過 這個socket接口來實現(xiàn)。在應(yīng)用開發(fā)小就像用文件句柄一樣,可以對socket 句柄進行讀、寫操作。3. 2. 3 winsock的通訊方式使用socket進行通訊的方式有3利-字節(jié)
17、流套接字(streasocket):tcp/ip 協(xié)議族屮tcp協(xié)議使用此類接口,它提供面向連接的(建立虛電路)、無差錯的、 發(fā)送順序致的、包長度不限和非重復(fù)的網(wǎng)絡(luò)信包傳輸;數(shù)據(jù)報套接字(datagram socket) :tcp/ip 協(xié)議族中的 udp (user datagram protocol)協(xié)議使用此類接 口, 它是無連接的服務(wù),以獨立的信包進行網(wǎng)絡(luò)傳輸,信包最犬長度為32rb,傳輸 不保證順序性、可靠性和無重復(fù)性,通常用于單個報文傳輸或可靠性要求不高的 場合;原始數(shù)據(jù)包套接字(rawsocket):提供對網(wǎng)絡(luò)下層通信協(xié)議(如1p協(xié)議) 的直接訪問,一般不是提供給普通用戶的,主要
18、用于開發(fā)新的協(xié)議或用于提取協(xié) 議較隱蔽的功能。其中字節(jié)流套接字是最常用的套接字類型。3 socket開發(fā)工具的討論套接字是通信的基石,是支待tcp/ip協(xié)議的網(wǎng)絡(luò)通信的本操作單兀,所以 在各種網(wǎng)絡(luò)應(yīng)用程序中,凡是涉及到數(shù)據(jù)傳送和接收,一般都會使用socket3. 1 c#中socket編程實現(xiàn)visual c#主要網(wǎng)絡(luò)功能主要使用.net framework sdk中的提供的二個命 名空間"system. net. sockets"和"system. net"而實現(xiàn)socket使用的是命名空 間"system. net. sockets&quo
19、t;中的 socke 類在.net 中 system. net. sockets 命名空 間為需要嚴密控制網(wǎng)絡(luò)訪問的開發(fā)人員提供了 windows sockets (winsock)接口 的托管實現(xiàn)。net類可以視為包含3個層次:請求/響應(yīng)層、應(yīng)用協(xié)議層、傳輸 層。socket類處于傳輸層。system. net命名空間中的所有其他網(wǎng)絡(luò)訪問類都建 立在該套接字socket實現(xiàn)之上。visual c#通過創(chuàng)建socket類的實例來實現(xiàn) socket的托管。在visual c#中首先創(chuàng)建socket對象的實例,創(chuàng)建完socket實例后,可 以通過此socket實例的bind方法綁定到網(wǎng)絡(luò)中指定的終
20、結(jié)點,也可以通過其 connect方法向指定的終結(jié)點建立的連接。連接創(chuàng)建完畢,就可以使用其send 或sendto方法將數(shù)據(jù)發(fā)送到socket;同樣使用其的receive或receivefrom方 法從socket屮讀取數(shù)據(jù)。在socket使用完畢后,請使用其的shutdown方法禁用socket并使用close方法關(guān)閉sockcto3. 2 delphi中socket的操作方法根據(jù)連接發(fā)起的方式以及木地socket耍連接的目標(biāo),socket之間的連接可 以分為:客戶端連接、監(jiān)聽連接以及服務(wù)器端連接。delphi分別使用clientsocket組件和serversocket組件來操縱客戶端 s
21、ocket和服務(wù)器端socket的連接和通信。clientsocket組件為客戶端組件。它 是通信的請求方,也就是說,它是主動地與服務(wù)器端建立連接。serversocket 組件為服務(wù)器端組件。它是通信的響應(yīng)方,也就是說,它的動作是監(jiān)聽以及被動 接受客戶端的連接請求,并對請求進行冋復(fù)。serversocket組件可以同時接受 一個或多個clientsocket組件的連接請求,并與每個clientsocket組件建立單 獨的連接,進行單獨的通信。3. 2. 1 serversocket 的屬性設(shè)置(1) pori是通信的端口,必須設(shè)置。(2) servertype服務(wù)器端讀寫信息類型,設(shè)置為st
22、threadblocking表示異步 讀寫信息,本文實例中采用這種方式。(3) thrcadcachcsizc,客戶端的最大連接數(shù),就是服務(wù)器端最多允許多少客戶 端同時連接。3. 2. 2 cl ientsocket 的屬性(1) port,是通信的端口,必須與服務(wù)器端的設(shè)置和同。否則可能導(dǎo)致兩個組 件發(fā)送的目標(biāo)端口和接收的端口不一致,無法建立有效的信息傳送連接。(2) clicnttypc,客戶端讀寫信息類型,應(yīng)該與服務(wù)器端的設(shè)置相同,為 ctnonblocking示異步讀寫信息。4 socket在tcp與udp協(xié)議集中的工作方式4. 1傳輸層的tcp與udptcp/ip協(xié)議體系結(jié)構(gòu)中的傳輸
23、層有兩個并列的協(xié)議:tcp和udp。其中tcp 是面向連接的,它在兩個tcp端點之間支持面向連接的、可靠的傳輸服務(wù)。udp 是無連接的,用于在兩個udp端點z間支持無連接的、不可靠的傳輸服務(wù)。一般 情況下,tcp和udp共存于一個網(wǎng)間網(wǎng)中,前者提供高可靠性服務(wù),后者提供高 效率服務(wù)tcp/ip協(xié)議族的層次結(jié)構(gòu)如圖4-1所示telnet ftpsmtp dns 其它tcpijdpicmparp rarpakpanetpdn其它圖4-1 tcp/1p協(xié)議族的層次結(jié)構(gòu)4. 2傳輸層端口與socket在進程通信的意義上,網(wǎng)絡(luò)通信的最終地址不僅僅是網(wǎng)絡(luò)層提供的主機tp 地址,還應(yīng)該包括描述進程的某種標(biāo)識
24、符,因此tcp和udp都提出了協(xié)議端口的 概念,用于標(biāo)識通信的進程。具休地說,端口用來標(biāo)識應(yīng)用層進程。每個端口都擁有一個稱做端口號的整數(shù)標(biāo)識符,用于區(qū)分不同端口。由于 tcp和udp是完全獨立的兩個軟件模塊。因此各自的端口號也相互獨立,也就是 說,tcp和udp都有70端口,而兩個端口都不會沖突o根據(jù)tcp和udp的報文 格式的規(guī)定,兩個協(xié)議分別提供65536個不同的端口值。端口號分為兩類:一類 是由因特網(wǎng)指派名字和號碼公司1cann負責(zé)分配給一些常用的應(yīng)用層程序固 定使用的熟知端口,其數(shù)值一般為01023,其小tcp和udp均規(guī)定小于 256的端口號作為保留端口。例如ftp用1、telnet
25、用23、smtp用25、dns用 53、http用80、snmp用161等。當(dāng)一個新的應(yīng)用程序出現(xiàn)吋,必須為其指派一 個熟知端口,否則其它的應(yīng)用進程就無法與其進行交互;另一類是口由端口,端 口分配使用動態(tài)聯(lián)系方式,也稱為本地分配。進程需要訪問傳輸服務(wù)時,向本地 操作系統(tǒng)提出動態(tài)申請,操作系統(tǒng)返回一個本地惟一的端口號,進程在通過合適 的系統(tǒng)調(diào)用將自己和相應(yīng)端口號聯(lián)系起來。當(dāng)進程要與遠地進程通信前,首先申 請一個自由端口,然后根據(jù)全局分配的公認端口號與遠地服務(wù)器建立聯(lián)系,才能 傳輸數(shù)據(jù)。socket由4bsd unix首先提出,目的是解決網(wǎng)間網(wǎng)進程通信的問題。進程 通信前,雙方首先齊自創(chuàng)建一個端口
26、,每一個socket有-一個本地惟一的socket 號,由操作系統(tǒng)分配,socket包括ip地址(32位)和端口號(16位),共48 位。插口、端口和ip地址的關(guān)系如圖4-2所示。i p地址端口號圖4-2插口、端口和ip地址的關(guān)系4. 3用socket實現(xiàn)基于tcp和udp的原理socket有兩種主要的操作方式:而向連接的和無連接的。而向連接的socket 操作就相當(dāng)于電話,當(dāng)兩個人通話時。他們必須建立一個連接,所有的事情在到 達吋的順序與它們出發(fā)吋的順序是一樣的,面向連接的bsd unix socket的工作 流程如圖4-3所示。無連接的socket操作就像是一個郵件投遞,多郵件可能到 達時
27、的順序與出發(fā)時的順序不一樣。圖4-3面向連接的客戶端/服務(wù)器時序圖使用哪種模式由應(yīng)用程序的需要決定。如果可靠性更重要的話,用面向連接 的操作會好一些。比如文件服務(wù)器需要它們的數(shù)據(jù)正確性和有序性。如果一些數(shù) 據(jù)丟失了,系統(tǒng)的有序性就會失去。一些服務(wù)器,比如間歇性地發(fā)送一些數(shù)據(jù)塊, 如果數(shù)據(jù)丟了的話,服務(wù)器并不想再重新發(fā)送一次。因為當(dāng)數(shù)據(jù)到達的時候,它 叮能已經(jīng)過時了。確保數(shù)據(jù)的有序性和正確性需要額外的內(nèi)存消耗,額外的費用 將會降低系統(tǒng)的回應(yīng)效率。無連接的操作使用數(shù)據(jù)報協(xié)議。一個數(shù)據(jù)報是一個獨立的單元,它包含了所 有的這次投遞信息。把它想象成一個信封,它有目的地址和要發(fā)送的內(nèi)容。這個 模式下的so
28、cket不需耍連接一個口的的socket,它只是簡單地投出數(shù)據(jù)報。無 連接的操作是快速和高效的,但是數(shù)據(jù)的安全性不佳。面向無連接的bsd unix socket工作流程如圖4-4所示。服務(wù)器圖4-4面向無連接的客戶機/服務(wù)器時序圖5 socket在java編程語言中的應(yīng)用以及實現(xiàn)5. 1 socket在java中的工作流程java編程語言是現(xiàn)在internet ±最流行的一種編程語言。一般來說,網(wǎng)絡(luò) 中互相通信的兩端,其中提供服務(wù)的一端叫服務(wù)器,而請求服務(wù)的一端叫客戶機。 socket通常用來實現(xiàn)cl ient/server設(shè)計過程,所謂cl ient/server是指通信 雙方一方
29、作為服務(wù)器(server)等待客戶(client)提出請求并予以響應(yīng)。客戶 則在需要服務(wù)時向服務(wù)器提岀中請。服務(wù)器一般作為守護進程始終運行,監(jiān)聽網(wǎng) 絡(luò)端口,一旦有客戶請求,就會啟動一個服務(wù)進程來響應(yīng)客戶,同時繼續(xù)監(jiān)聽服務(wù)端口,使其它客戶的請求也能及時得到處理。一般連接過程是:serve端listen (監(jiān)聽)某個prot (端口)是否有連接請求,client端向server端發(fā)川1connect (連接)請求,server端向cl ient端發(fā)回accept (接受)消息,一個 連接就建立起來了。server端和client端都可以通過send、write等方法與對 方通信。5. 2在java
30、中實現(xiàn)socket通訊5. 2. 1 創(chuàng)建 socket 和 serversocket 對象首先在服務(wù)器端,通過創(chuàng)建serversocket類對象,來創(chuàng)建服務(wù)器對象,其 格式如下:serversocket 服務(wù)器對象名二new serversocket(端口號);然后通過調(diào)用accept ()方法來創(chuàng)建一個socket對彖,其格式如下:socket對象名二服務(wù)器對象名accept ();()服務(wù)器端可以利用這個socket對象與客戶端進行通訊,用下面的語句得到 輸入流和輸出流:bufferedreader in=new bufferedreader(new inputstreamreader(
31、socke 對象 名.getlnputstream();printwriter out =new printwriter(socket 對象名.getoutputstream()true,);隨后就可以使用in.readline0方法得到客戶端的輸入,也可以使用 out. printlno方法向客戶端發(fā)送數(shù)據(jù)從而可以根據(jù)程序的需要對客。戶端的不 同請求進行回應(yīng)。在所有通信結(jié)束后,應(yīng)該關(guān)閉輸入流和輸出流,釋放系統(tǒng)資源關(guān)閉的順序 是先關(guān)閉輸入流和輸川流,然后再關(guān)閉socket,調(diào)用的方法均為close方法。 5.2.2創(chuàng)建服務(wù)器端下面創(chuàng)建了一個簡單的服務(wù)器端測試程序的部分語句:serversock
32、et thisserver=new serversocket(8186);socket thissocket=theserver.accept();bufferedreader in =newb ufferedreader(ne winputs treamreader(thissocket.getinputstream();printwriteroutout=newprintwriter(newoutputstreamwriter(thissocket.getoutputstream(),true );string str=in.readline();下面的程序段是服務(wù)器測試程序,服務(wù)器接收客
33、戶機發(fā)來的信息,并顯示在 屏幕上:. *;import java.i o.*;public class servertestpublic static void main(string argsf )serversocket serversocket;socket clientsocket;dataoutputstream dataoutput;datalnputstream datalnput;string receivestring;clientsocket=serversocket.accept();dataoutput =new dataoutputstream(clientsocke
34、t.getoutputstream();datalnput=new datainputstream(clientsocket.getinputstream(); dataoutput-writeutf(sendstring);5.2.3建立客戶端與建立服務(wù)器端相比,客戶端要簡單一些,客戶端只需用服務(wù)器所在機器的 ip以及服務(wù)器的端口作為參數(shù)創(chuàng)建一個socket類對象。得到這個對象后,就可 以實現(xiàn)數(shù)據(jù)的輸入與輸出。下面的程序代碼創(chuàng)建了一個socke類對象client, client連接到ip地址為 192. 168. 1. 22的主機上的端口為8186的服務(wù)器,并且建立了輸入和輸出流,分 別對應(yīng)
35、服務(wù)器的輸出和客戶端的輸入。socket client=new socket(n 2"8 186);bufferedreaderin=newb ufferedreader(ne w inputstreamreader(client.getlnputstreamo);printwriter out =new printwriter(client. getooutputstream(), true):這里只是簡單介紹了 java, net包中的socket和serversocket類中的彳用 方法,以此來實現(xiàn)使用socket進行通信。其實除此z外,java語言與網(wǎng)絡(luò)
36、操作 相關(guān)的包還有 java.io、java.applet、java.utik java.sqk java.rmi 和 java.mail 等。6結(jié)論木文詳細介紹了 socket套接字在不同的操作系統(tǒng),不同編程語言以及不同 的協(xié)議集屮的實現(xiàn)和支持情況,最后用j a va編程語言利用winsock (windows socket)套接樓實現(xiàn)網(wǎng)絡(luò)通訊的實例,更進一步的介紹了 socket更為詳細的工作 流程,最終得出:socket套接字就是工作在tcp/ip參考模型的傳輸層之上、引 用層之下的一個api通道,由它來連接tcp/tp參考模型的應(yīng)用層與下三層數(shù)據(jù) 通道。謝辭經(jīng)過這些天的努力,我終于完成
37、了基于socket網(wǎng)絡(luò)通信協(xié)議的應(yīng)用研究論 文。在此我非常感謝我的指導(dǎo)老師,感謝她對我的悉心指導(dǎo)與幫助。當(dāng)我無力面 對制作論文過程中的難題吋,他細心地記下我的問題,在百忙之中抽空為我解決 各方面的問題。給我解決了很多我以前不懂的問題,也使我掌握了很多有用的東 西,同時我也學(xué)到了很多新鮮的知識點。也感謝學(xué)院給我這樣一個機會,制作畢 業(yè)設(shè)計的過程雖是對我們所學(xué)知識的檢查,但更多的是使我們的專業(yè)知識有了提 升,用到實際生活中去了。參考文獻:1 方軍,吳曉冰.中間件tcp/ip網(wǎng)絡(luò)接口的實現(xiàn)j微電腦世界周刊,1999, (29):74-772 于濤基于socket通訊技術(shù)的上層監(jiān)控軟件的實現(xiàn)m.計算機
38、技術(shù)與發(fā)展,2009,03(10) : 26-273 鄒月.socket的網(wǎng)絡(luò)編程研究與實現(xiàn).電腦編程技巧與維護,2009, 08.4 李巧玲.基于c#-socket的網(wǎng)絡(luò)通信程序設(shè)計.福建電腦,2009, 04.5 羅亞非.基于tcp的socket多線程通信.電腦知識與技術(shù),2009, 03.6 陳曉舟.使用socket組件開發(fā)c/s網(wǎng)絡(luò)考試系統(tǒng).硅谷,2009, 04.7 徐小蕾.分層系統(tǒng)socket通信軟件的設(shè)計與實現(xiàn).計算機應(yīng)用與軟件.2009,01.8 郭東升.linux環(huán)境下基于socket的網(wǎng)絡(luò)通信軟件導(dǎo)刊,2009, 01.9 王豐錦,邵新宇.基于socket和多線程的應(yīng)用程序
39、間通信技術(shù)的研究j.計算機應(yīng)用,2000,20(6):65-6710 workflow management coalition. wfmc-tc00-1003, 1995. the workflow referencemodels.11 wong rw, rabie. hisrologic and u)trastructual ttudy on statin graft tn rabbitskulls.j oral maxillofac surg, 2005, 63(10):1515-1521.以下附件為贈品,祝你事業(yè)有成!高效能人士的50個習(xí)慣在行動前設(shè)定目標(biāo)有目標(biāo)未必能夠成功,但沒有目標(biāo)
40、的肯定不能成功。著名的效率提升大師博 思崔西說:“成功就是目標(biāo)的達成,其他都是這句話的注釋?!爆F(xiàn)實中那些頂尖 的成功人士不是成功了才設(shè)定目標(biāo),而是設(shè)定了目標(biāo)才成功。 一次做好一件事著名的效率提升大師博思崔西有一個著名的論斷:“一次做好一件事的人比 同時涉獵多個領(lǐng)域的人要好得多?!备惶m克林將自己一生的成就歸功于對“在一 定時期內(nèi)不遺余力地做一件事”這一信條的實踐。培養(yǎng)重點思維從重點問題突破,是高效能人士思考的一項重要習(xí)慣。如果一個人沒有重點 地思考,就等于無主要目標(biāo),做事的效率必然會十分低下。相反,如果他抓住了 主要矛盾,解決問題就變得容易多了。發(fā)現(xiàn)問題關(guān)鍵在許多領(lǐng)導(dǎo)者看來,高效能人士應(yīng)當(dāng)具備的
41、最重要的能力就是發(fā)現(xiàn)問題關(guān)鍵 能力,因為這是通向問題解決的必經(jīng)之路。正如微軟總裁兼首席軟件設(shè)計師比爾。 蓋茨所説:“通向最高管理層的最迅捷的途徑,是主動承擔(dān)別人都不愿意接手的 工作,并在其中展示你出眾的創(chuàng)造力和解決問題的能力?!卑褑栴}想透徹把問題想透徹,是一種很好的思維品質(zhì)。只要把問題想透徹了,才能找到問 題到底是什么,才能找到解決問題最有效的手段。 不找借口美國成功學(xué)家格蘭特納說過這樣的話:“如果你有為自己系鞋帶的能力,你 就有上天摘星星的機會!” 一個人對待生活和工作是否負責(zé)是決定他能否成功的 關(guān)鍵。一名高效能人士不會到處為自己找借口,開脫責(zé)任;相反,無倫出現(xiàn)什么 情況,他都會自覺主動地將
42、自己的任務(wù)執(zhí)行到底。要事第一創(chuàng)設(shè)遍及全美的事務(wù)公司的亨瑞。杜哈提說,不論他出多小錢的薪水,都不 可能找到一個具有兩種能力的人。這兩種能力是:第一,能思想;第二,能按事 情的重要程度來做事。因此,在工作中,如果我們不能選擇正確的事情去做,那 么唯一正確的事情就是停止手頭上的事情,直到發(fā)現(xiàn)正確的事情為止。運用20/80法則二八法則向人們揭示了這樣一個真理,即投入與產(chǎn)出、努力與收獲、原因和 結(jié)果之間,普遍存在著不平衡關(guān)系。小部分的努力,可以獲得大的收獲;起關(guān)鍵 作用的小部分,通常就能主宰整個組織的產(chǎn)出、盈虧和成敗。 合理利用零碎時間所謂零碎時間,是指不構(gòu)成連續(xù)的時間或一個事務(wù)與另一事務(wù)銜接時的空余
43、時間。這樣的時間往往被人們毫不在乎地忽略過去,零碎時間雖短,但倘若一日、 一月、一年地不斷積累起來,其總和將是相當(dāng)可觀的。凡事在事業(yè)上有所成就的 人,幾乎都是能有效地利用零碎時間的人。 習(xí)慣10、廢除拖延對于一名高效能人士來説,拖延是最具破壞性的,它是一種最危險的惡習(xí), 它使人喪失進取心。一旦開始遇事推托,就很容易再次拖延,直到變成一種根深 啼蒂固的習(xí)慣。 習(xí)慣11、向競爭對手學(xué)習(xí)一位知名的企業(yè)家曾經(jīng)說過,“對手是一面鏡子,可以照見自己的缺陷。如 果沒有了對手,缺陷也不會自動消失。對手,可以讓你時刻提醒自己:沒有最好 的,只有更好。” 習(xí)慣12、善于借助他人力量年輕人要成就一番事業(yè),養(yǎng)成良好的
44、合作習(xí)慣是不可少的,尤其是在現(xiàn)代職 場中,靠個人單打獨斗的時代已經(jīng)過去了,只有同別人展開良好的合作,才會使 你的事業(yè)更加順風(fēng)順?biāo)?。如果你要成為一名高效能的職場人士,就?yīng)當(dāng)養(yǎng)成善于 借助他人力量的好習(xí)慣。 習(xí)慣13、換位思考在人際的相處和溝通里,“換位思考”扮演著相當(dāng)重要的角色。用“換位思 考”指導(dǎo)人的交往,就是讓我們能夠站在他人的立場上,設(shè)身處地理解他人的情 緒,感同身受地明白及體會身邊人的處境及感受,并且盡可能地回應(yīng)其需要。樹立團隊精神一個真正的高效能人士,是不會依仗自己業(yè)務(wù)能力比別人更優(yōu)秀而傲慢地拒 絕合作,或者合作時不積極,傾向于一個人孤軍奮戰(zhàn)。他明白在一個企業(yè)中,只 有團隊成功,個人才
45、能成功。善于休息休息可以使一個人的大腦恢復(fù)活力,提高一個人的工作效能。身處激烈的競 爭之中,每一個人如上緊發(fā)條的鐘表.因此,一名高效能人士應(yīng)當(dāng)注意工作中的調(diào) 節(jié)與休息,這不但于自己健康有益,對事業(yè)也是大有好處的。 及時改正錯誤一名高效能人士要善于從批評中找到進步的動力批評通常分為兩類,有價 值的評價或是無理的責(zé)難不管怎樣,坦然面對批評,并且從中找尋有價值、可參 考的成分,進而學(xué)習(xí)、改進、你將獲得意想不到的成功。責(zé)任重于一切著名管理大師德魯克認為,責(zé)任是一名高效能工作者的工作宣言在這份工 作宣言里,你首先表明的是你的工作態(tài)度:你要以高度的責(zé)任感對待你的工作,不 懈怠你的工作、對于工作中出現(xiàn)的問題
46、能敢于承擔(dān).這是保證你的任務(wù)能夠有效 完成的基本條件。 不斷學(xué)習(xí)一個人,如果每天都能提高1%,就沒有什么能阻擋他抵達成功成功與失敗 的距離其實并不遙遠,很多時候,它們之間的區(qū)別就在于你是否每天都在提高你 自己;如果你不堅持每天進步1%的話,你就不可能成為一名高效能人士.讓工作變得簡單簡單一些,不是要你把事情推給別人或是逃避責(zé)任,而是當(dāng)你焦點集中很清 楚自己該做那些事情時,自然就能花更小的力氣,得到更好的結(jié)果. 重在執(zhí)行執(zhí)行力是決定一個企業(yè)成敗的關(guān)鍵,同時也是衡量一個人做事是否高效的重 要標(biāo)準.只做適合自己的事找到合適自己的事,并積極地發(fā)揮專長,成為行業(yè)的能手,是高效能人士應(yīng)當(dāng) 努力追求的一個目
47、標(biāo).把握關(guān)鍵細節(jié)精細化管理時代已經(jīng)到來,一個人要成為一名高效能人士,必須養(yǎng)成重視細 節(jié)的習(xí)慣做好小事情既是一種認真的工作態(tài)度,也是一種科學(xué)的工作精神一個 連小事都做不好的人,絕不可能成為一名高效能人士. 不為小事困擾我們通常都能夠面對生活中出現(xiàn)的危機,但卻常常被一些小事搞得垂頭喪氣, 整天心情不快,精神憂悶緊張。一名高效能人士應(yīng)當(dāng)及時擺脫小事困擾,積極地面 對工作和生活。 專注目標(biāo)美國明尼蘇達礦業(yè)制造公司(3m)的口號是:寫出兩個以上的目標(biāo)就等于沒有 目標(biāo).這句話不僅適用于公司經(jīng)營,對個人工作也有指導(dǎo)作用。 有效溝通人與人之間的交往需要溝通,在公司,無論是員工于員工員工于上司員工與 客戶之間都
48、需要溝通.良好的溝通能力是工作中不可缺小的,一個高效能人士絕 不會是一個性格孤僻的人,相反他應(yīng)當(dāng)是一個能設(shè)身處地為別人著想充分理解對 方能夠與他人進行桌有成效的溝通的人。及時化解人際關(guān)系矛盾與人際交往是一種藝術(shù),如果你曾為辦公室人際關(guān)系的難題而苦惱,無法忍 受主管的反復(fù)無常,看不慣主管的假公濟私,那么你要嘗試學(xué)習(xí)如何與不同的人相處,提高自己化解人際矛盾的能力。 積極傾聽西方有句諺語說:“上帝給我們兩只耳朵,卻只給了一張嘴巴?!逼溆靡庖彩?要我們小説多聽。善于傾聽,是一個高效能人士的一項最基本的素質(zhì)。保持身體健康充沛的體力和精力是成就偉大事業(yè)的先決條件。保持身體健康,遠離亞健康 是每一名高效能人
49、士必須遵守的鐵律。 杜絕壞的生活習(xí)慣習(xí)慣有好有壞。好的習(xí)慣是你的朋友,他會幫助你成功。一位哲人曾經(jīng)説過: “好習(xí)慣是一個人在社交場合中所能穿著最佳服飾?!倍鴫牧?xí)慣則是你的敵人, 他只會讓你難堪、丟丑、添麻煩、損壞健康或事業(yè)失敗。釋放自己的憂慮孤獨和憂慮是現(xiàn)代人的通病。在紛繁復(fù)雜的現(xiàn)代社會,只有保持內(nèi)心平靜的 人,才能保證身體健康和高效能的工作。 合理應(yīng)對壓力身體是革命的本錢,狀態(tài)是成功的基礎(chǔ)。健康,尤其是心理健康,已成為職 場人士和企業(yè)持續(xù)發(fā)展的必備保障。學(xué)會正確地應(yīng)對壓力就成了高效能人士必備 的一項習(xí)慣。掌握工作與生活的平衡真正的高效能人士都不是工作狂,他們善于掌握工作與生活平衡。工作壓力
50、會給我們的工作帶來種種不良的影響,形成工作狂或者完美主義等錯誤的工作習(xí) 慣,這會大大地降低一個人的工作績效。 及時和同事及上下級交流工作正確處理自己與上下級各類同事的關(guān)系,及時和同事、上下級交流工作,是 高效能人士的一項重要習(xí)慣。做到上下逢源,正確處理“對上溝通”,與同事保 持良好的互動交流是我們提高工作效能的一個關(guān)鍵。 注重準備工作一個善于做準備的人,是距離成功最近的人。一個缺乏準備的員工一定是一 個差錯不斷的人,縱然有超強的能力,千載難逢的機會,也不能保證獲得成功。守時如果你想成為一名真正的高效能人士,就必須認清時間的價值,認真計劃, 準時做每一件事。這是每一個人只要肯做就能做到的,也是一
51、個人走向成功的必 由之路。高效地搜集并消化信息當(dāng)今世界是一個以大量資訊作為基礎(chǔ)來開展工作的社會。在商業(yè)競爭中,對 市場信息尤其是市場關(guān)鍵信息把握的及時性與準確性,對競爭的成敗有著特殊的 意義。一個高效能人士應(yīng)當(dāng)對事物保持敏感,這樣才能在工作中贏得主動。 注重完善自己的人際關(guān)系網(wǎng)人際能力在一個人的成功中扮演著重要的角色。成功學(xué)專家拿破侖希爾曾 對一些成功人士做過專門的調(diào)查。結(jié)果發(fā)現(xiàn),大家認同的杰出人物,其核心能力 并不是他的專業(yè)優(yōu)勢,相反,出色的人際策略卻是他們成功的關(guān)鍵。歷練說話技巧有人說:“眼睛可以容納一個美麗的世界,而嘴巴則能描繪一個精彩的世界?!?法國大作家雨果也說:“語言就是力量?!钡?/p>
52、確,精妙、高超的語言藝術(shù)魅力非凡, 世界上歐美等發(fā)達國家把“舌頭、金錢、電腦”并列為三大法寶,口才披公認為 現(xiàn)代職場人士必備素質(zhì)之一。一名高效能人士的好口才加上禮儀禮節(jié),往往可以 為自己的工作錦上添花,如果我們能夠巧妙運用語言藝術(shù),對協(xié)調(diào)人際關(guān)系、提 高工作效能都將大有裨益。善于集思廣益、博采眾議一件事物往往存在著多個方面,要想全面、客觀地了解一個事物,必須兼聽 各方面的意見,只有集思廣益,博采眾長,才能了解一件事情的本來面目,才能 采取最佳的處理方法。因此,一名高效能人士要時常以“兼聽則明,偏聽則暗” 的諫言提醒自己,多方地聽取他人的意見,以確保自己能夠做出正確的決定。善于授權(quán)善于授權(quán),舉重
53、若輕才是管理者正確的工作方式:舉輕若重,事必躬親只會 讓自己越陷越深,把自己的時間和精力浪費于許多毫無價值的決定上面。 制訂卻實可行的計劃許多成功人士的成功經(jīng)驗告訴我們,認真的做一份計劃不但不會約束我們, 還可以讓我們的工作做得更好。當(dāng)然,同許多其他重要的事情一樣,執(zhí)行計劃并 不是一件簡單容易的事。如果你約束自我,實現(xiàn)了自己制定的計劃,你就一定會 成為一個卓有成效的高效能人士。 經(jīng)常和成功人士在一起心理學(xué)研究表明,環(huán)境可以讓一個人產(chǎn)生特定的思維習(xí)慣,甚至是行為習(xí)慣。 環(huán)境能夠改變我們的思維與行為習(xí)慣,直接影響到我們的工作效能與生活。和成 功人士在一起,有助于我們在身邊形成一個“成功”的氛圍,在
54、這個氛圍中我們 可以向身邊的成功的人士學(xué)習(xí)正確的思維方法,感受他們的熱情,了解并掌握他 們處理問題的方法。有效決策一個好的決策思想,不是限期完成的,而是在反復(fù)思考、不斷推敲的過程中, 在相關(guān)事物或其他活動中受啟發(fā)頓悟而產(chǎn)生和迸發(fā)出來的。一個高效的決策者的 價值在于“做正確的事”,同時幫助各管理層的主管“把事情做正確”,把決策落實。遇到困難找方法一個高效能人士,是最重視找方法的人。他們相信凡事都會有方法解決,而 且是總有更好的方法。 不被瑣務(wù)纏身高效能人士不會被太多的瑣務(wù)纏身。其含義主要是說高效能人士要充分重視 時間的價值,不浪費時間會做那些不值得去做的事情。 及時走出失敗高效能人士不會讓自己永
55、遠徘徊在失敗的陰影之下。相反他們總是把所有的 “失敗”都看作“尚未成功”在遭遇一次次失敗的時候,他們會始終以一種積極 的心態(tài)來面對。不論多么困難,他們都要鼓勵自己再試一次。 保持一顆平常心無倫做事還是做人,除了要善于抓住時機,懂得運用必要的技巧之外,還需 要保持一顆平常人的心態(tài)。這種平常心,對于一名高效能人士來講,是十分重要 的。 給人留下好的第一印象外表漂亮的人更受人歡迎,更容易獲得他人的青睞,這就是“光環(huán)效應(yīng)”的 作用。一個人的某一品質(zhì)被認為是好的,他就被一種積極的光環(huán)所籠罩,從而也 被賦予其他好的品質(zhì);如果一個人的某一品質(zhì)被認為是壞的,他就被一種消極的 光環(huán)所籠罩,并被賦予其他不好的品質(zhì)
56、。擁有雙贏思維對于職場人士來講,這種雙贏的本質(zhì)是有感染力的。如果你在工作中是一個 人心胸開闊、樂于幫助別人成功和愿意與他人分享榮譽的人的話,那么你就不愁 沒有朋友。如果你的周圍充滿了對你的成功感興趣而又希望你成功的人,你在工 作中就會充滿與別人合作的熱情。這對你工作績效的提高很有幫助。 追求綽約,超越自我追求完美不僅是一種重要的工作態(tài)度,也是一種重要的生活標(biāo)準,是我們工 作效能和生活質(zhì)量的重要保證。一個滿足于現(xiàn)狀、不思進取的人永遠也無法成為 一名高效能人士。成功人士選備的十五種能力 解決問題時的逆向思維能力面對工作中遇到的新問題,一時又找不到解決方法。而且,上司可能也沒有 什么錦囊妙計時,他們擅長用逆向思維辦法去探索解決問題的途徑。他們清楚具 體業(yè)務(wù)執(zhí)行者比上司更容易找出問題的節(jié)點,是人為的,還是客觀的;是技術(shù)問 題,還是管理漏洞。采用逆向思維找尋問題的解決方法,會更容易從問題中解脫 出來。 考慮問題時的換位思考能力在考慮解決問題的方案時,常人通常站在自己職責(zé)范圍立場上盡快妥善處理。而他們卻 總會自覺地站在公司或老板的立場去考慮解決問題的方案。作為公
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 原地回遷合同范本
- 體育冠名合同范本
- 合同范例起訴書
- 展會招商渠道合同范本
- 單位簽合同范例
- 合同范本格式 字體
- 冷鏈車輛采購合同范本
- 臨時安置房建設(shè)合同范本
- 樓地面找平合同范本
- 合同范例機械產(chǎn)品
- 2023風(fēng)力發(fā)電機組延壽評估技術(shù)規(guī)范
- 鞋業(yè)-品質(zhì)培訓(xùn)
- 小學(xué)思政課《愛國主義教育》
- 瓜豆原理【模型專題】(含答案解析)
- 單價、數(shù)量、總價-教學(xué)課件【A3演示文稿設(shè)計與制作】
- 中小學(xué)生安全教育手冊全面版
- 變電站安裝工程安全風(fēng)險分級管控清單
- DDI-能力解構(gòu)詞典
- 燃氣管道工程監(jiān)理實施細則
- 安全經(jīng)驗分享之行車安全經(jīng)驗分享
- 忻州市忻府區(qū)康益種植園利用粉煤灰開發(fā)造地項目?環(huán)評報告
評論
0/150
提交評論