欧美成人午夜免费全部完,亚洲午夜福利精品久久,а√最新版在线天堂,另类亚洲综合区图片小说区,亚洲欧美日韩精品色xxx

扣丁學(xué)堂Java在線(xiàn)學(xué)習(xí)簡(jiǎn)述Java Socket編程服務(wù)器Sockets

2018-06-13 11:35:16 1325瀏覽

本篇文章扣丁學(xué)堂Java培訓(xùn)小編主要是想和大家分享一下Java Socket編程服務(wù)器Sockets,文章中會(huì)有代碼列出,對(duì)Java開(kāi)發(fā)感興趣的小伙伴就隨著小編一起來(lái)了解一下吧。





具體如下:


列表9.2是一個(gè)服務(wù)器應(yīng)用程序的一部分。



列表9.2 一個(gè)簡(jiǎn)單的服務(wù)器程序 



/** 
* 一個(gè)監(jiān)聽(tīng)端口并提供HTML文檔的程序.
*/ 
class SimpleWebServer { 
public static void main(String args[]) 

ServerSocket serverSocket = null; 
Socket clientSocket = null; 
int connects = 0; 
try 


// 建立一個(gè)服務(wù)器socket 
serverSocket = new ServerSocket(80, 5); 
while (connects < 5) 

// 等待連接 
clientSocket = serverSocket.accept(); 
//服務(wù)連接
ServiceClient(clientSocket); 
connects++; 

serverSocket.close(); 

catch (IOException ioe) 

System.out.println("Error in SimpleWebServer: " + ioe); 


public static void ServiceClient(Socket client) 
throws IOException 

DataInputStream inbound = null; 
DataOutputStream outbound = null; 
try 

// 得到IO流 
inbound = new DataInputStream( client.getInputStream()); 
outbound = new DataOutputStream( client.getOutputStream()); 
//格式化輸出(回應(yīng)頭和很少的HTML文檔)
StringBuffer buffer = PrepareOutput(); 
String inputLine; 
while ((inputLine = inbound.readLine()) != null) 

//如果到了HTTP請(qǐng)求的尾部,就發(fā)送回應(yīng) 
if ( inputLine.equals("") ) 

outbound.writeBytes(buffer.toString()); 
break; 



finally 

// 清除 
System.out.println("Cleaning up connection: " + client); 
tln("Cleaning up connection: " + client); 
outbound.close(); 
inbound.close(); 
client.close(); 
client.close(); 



服務(wù)器并不是主動(dòng)地建立連接.相反地,他們是被動(dòng)地監(jiān)聽(tīng)一個(gè)客戶(hù)端的連接請(qǐng)示然后給他們服務(wù).服務(wù)器是由類(lèi)ServerSocket來(lái)建立的.下面的程序建立了一個(gè)服務(wù)器端socket并把它綁定到80端口:



ServerSocket serverSocket = new ServerSocket(80, 5); 


第一個(gè)參數(shù)是服務(wù)器要監(jiān)聽(tīng)的端口.第二個(gè)參數(shù)是可選的.API文檔中說(shuō)明了這是一個(gè)監(jiān)聽(tīng)時(shí)間,但是在傳統(tǒng)的socket程序中第二個(gè)參數(shù)是監(jiān)聽(tīng)深度.一個(gè)服務(wù)器可以同時(shí)接收多個(gè)連接請(qǐng)求,但是每次只能處理一個(gè).監(jiān)聽(tīng)堆是一個(gè)無(wú)回答的連接請(qǐng)求隊(duì)列.上面的請(qǐng)求建立一個(gè)連接來(lái)處理最后五個(gè)請(qǐng)求.如果省略了后面的一個(gè)參數(shù),則默認(rèn)值是50。



ServerSocket serverSocket = new ServerSocket(80, 5); 


一旦socket建立了并開(kāi)始監(jiān)聽(tīng)連接,進(jìn)來(lái)的連接將會(huì)建立并放在監(jiān)聽(tīng)堆.accetp()方法把在堆中的連接取出來(lái)。



Socket clientSocket = serverSocket.accept(); 



這個(gè)方法返回一個(gè)用來(lái)與來(lái)訪者對(duì)話(huà)的客戶(hù)端連接.服務(wù)器本身不可能建立對(duì)話(huà),相反地,服務(wù)器socket會(huì)使用accept()方法來(lái)產(chǎn)生一個(gè)新的socket.服務(wù)器socket依舊打開(kāi)并排列新的連接請(qǐng)求。



與客戶(hù)端socket一樣,下面的一步建立輸入和輸出流:



DataInputStream inbound = new DataInputStream( clientSocket.getInputStream() ); DataOutputStream outbound = new DataOutputStream( clientSocket.getOutputStream() ); 


一般的I/O操作可以在新建的流中運(yùn)用.在服務(wù)器回應(yīng)前它等待客戶(hù)端發(fā)送一個(gè)空白的行.當(dāng)會(huì)話(huà)結(jié)束時(shí),服務(wù)器關(guān)閉流和客戶(hù)端socket.如果在隊(duì)列中沒(méi)有請(qǐng)示將會(huì)出現(xiàn)什么情況呢?那個(gè)方法將會(huì)等待一個(gè)的到來(lái).這個(gè)行為叫阻塞.accept()方法將會(huì)阻塞服務(wù)器線(xiàn)程直到一個(gè)呼叫到來(lái).當(dāng)5個(gè)連接處理完閉之后,服務(wù)器退出.任何的在隊(duì)列中的呼叫將會(huì)被取消。




所有的服務(wù)器都要有以下的基本的步驟:



1.建立一個(gè)服務(wù)器socket并開(kāi)始監(jiān)聽(tīng).

2.使用accept()方法取得新的連接. 

3.建立輸入和輸出流.

4.在已有的協(xié)議上產(chǎn)生會(huì)話(huà). 

5.關(guān)閉客戶(hù)端流和socket.

6.回到第二步或者到第七步.

7.關(guān)閉服務(wù)器socket.


以上就是扣丁學(xué)堂Java在線(xiàn)學(xué)習(xí)小編給大家分享的Java Socket編程服務(wù)器Sockets,希望對(duì)小伙伴們有所幫助。想要了解更多內(nèi)容的小伙伴可以登錄扣丁學(xué)堂官網(wǎng)咨詢(xún),扣丁學(xué)堂是專(zhuān)業(yè)的Java培訓(xùn)機(jī)構(gòu),不僅有專(zhuān)業(yè)的老師和與時(shí)俱進(jìn)的課程體系,還有大量的Java在線(xiàn)教程供學(xué)員觀看學(xué)習(xí),想要學(xué)習(xí)Java開(kāi)發(fā)的小伙伴快快行動(dòng)吧??鄱W(xué)堂Java技術(shù)交流群:670348138。


扣丁學(xué)堂微信公眾號(hào)

【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】



查看更多關(guān)于“Java開(kāi)發(fā)資訊的相關(guān)文章>>



標(biāo)簽: 扣丁學(xué)堂Java在線(xiàn)學(xué)習(xí) Java Socket編程服務(wù)器Sockets Java培訓(xùn) Java基礎(chǔ)教程 Java學(xué)習(xí)視頻 Java教學(xué)視頻 java入門(mén)教程 Java教程視頻 java在線(xiàn)學(xué)習(xí) java在線(xiàn)視頻 java在線(xiàn)教程

熱門(mén)專(zhuān)區(qū)

暫無(wú)熱門(mén)資訊

課程推薦

微信
微博
15311698296

全國(guó)免費(fèi)咨詢(xún)熱線(xiàn)

郵箱:codingke@1000phone.com

官方群:148715490

北京千鋒互聯(lián)科技有限公司版權(quán)所有   北京市海淀區(qū)寶盛北里西區(qū)28號(hào)中關(guān)村智誠(chéng)科創(chuàng)大廈4層
京ICP備2021002079號(hào)-2   Copyright ? 2017 - 2022
返回頂部 返回頂部