socket是套接字蜻直,多指傳輸層網(wǎng)絡(luò)接口。
Socket和SocketServer是基于套接字的服務(wù)端和客戶端實(shí)現(xiàn)
webSocket,是一個(gè)應(yīng)用層協(xié)議概而,說的是呼巷,目前瀏覽器實(shí)現(xiàn)的一套通信協(xié)議,用來解決之前HTTP赎瑰,請求響應(yīng)模型不合適的場合王悍。
Socket和SocketServer是服務(wù)端和客戶端的區(qū)別
1. 服務(wù)器端程序設(shè)計(jì)
在服務(wù)器端,利用ServerSocket類的構(gòu)造函數(shù)ServerSocket(int port)創(chuàng)建一個(gè)ServerSocket類的對象餐曼,port參數(shù)傳遞端口压储,這個(gè)端口就是服務(wù)器監(jiān)聽連接請求的端口,如果在這時(shí)出現(xiàn)錯(cuò)誤將拋出IOException異常對象源譬,否則將創(chuàng)建ServerSocket對象并開始準(zhǔn)備接收連接請求集惋。
服務(wù)程序從調(diào)用ServerSocket的accept()方法開始,直到連接建立踩娘。在建立連接后刮刑,accept()返回一個(gè)最近創(chuàng)建的Socket對象,該Socket對象綁定了客戶程序的IP地址或端口號养渴。
2.客戶端程序設(shè)計(jì)
當(dāng)客戶程序需要與服務(wù)器程序通信時(shí)雷绢,需在客戶機(jī)創(chuàng)建一個(gè)Socket對象。Socket類有構(gòu)造函數(shù)Socket(InetAddress addr理卑,int port)和Socket(String host翘紊,intport),兩個(gè)構(gòu)造函數(shù)都創(chuàng)建了一個(gè)基于Socket的連接服務(wù)器端流套接字的流套接字藐唠。對于第一個(gè)InetAd-dress子類對象通過addr參數(shù)獲得服務(wù)器主機(jī)的IP地址帆疟,對于第二個(gè)函數(shù)host參數(shù)包被分配到InetAddress對象中,如果沒有IP地址與host參數(shù)相一致宇立,那么將拋出UnknownHostException異常對象鸯匹。兩個(gè)函數(shù)都通過參數(shù)port獲得服務(wù)器的端口號。假設(shè)已經(jīng)建立連接了泄伪,網(wǎng)絡(luò)API將在客戶端基于Socket的流套接字中捆綁客戶程序的IP地址和任意一個(gè)端口號,否則兩個(gè)函數(shù)都會(huì)拋出一個(gè)IOException對象匿级。
如果創(chuàng)建了一個(gè)Socket對象蟋滴,那么它可通過get-InputStream()方法從服務(wù)程序獲得輸入流讀傳送來的信息,也可通過調(diào)用getOutputStream()方法獲得輸出流來發(fā)送消息痘绎。在讀寫活動(dòng)完成之后津函,客戶程序調(diào)用close()方法關(guān)閉流和流套接字掺出。