亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

JavaServerSocket用法詳解

2019-11-14 15:29:38
字體:
來源:轉載
供稿:網友

在客戶/服務器通信模式中,服務器端需要創建監聽特定端口的ServerSocket,ServerSocket負責接收客戶連接請求。

一、構造ServerSocket

ServerSocket的構造方法有以下幾種重載形式:

ServerSocket()throws IOException
ServerSocket(int port) throws IOException
ServerSocket(int port, int backlog) throws IOException
ServerSocket(int port, int backlog, InetAddress bindAddr) throws IOException

在以上構造方法中,參數port指定服務器要綁定的端口(服務器要監聽的端口),參數backlog指定客戶連接請求隊列的長度,參數bindAddr指定服務器要綁定的ip地址。

注意點:
1. 如果端口被占用或者沒有權限使用某些端口會拋出BindException錯誤。譬如1~1023的端口需要管理員才擁有權限綁定。
2. 如果設置端口為0,則系統會自動為其分配一個端口;
3. bindAddr用于綁定服務器IP,為什么會有這樣的設置呢,譬如有些機器有多個網卡。
4. ServerSocket一旦綁定了監聽端口,就無法更改。ServerSocket()可以實現在綁定端口前設置其他的參數。

二、綁定端口

除了第一個不帶參數的構造方法以外,其他構造方法都會使服務器與特定端口綁定,該端口由參數port指定。

例如,以下代碼創建了一個與80端口綁定的服務器:

1 ServerSocket serverSocket = new ServerSocket(80);

如果運行時無法綁定到80端口,以上代碼會拋出IOException,更確切地說,是拋出BindException,它是IOException的子類。

BindException一般是由以下原因造成的:

1.端口已經被其他服務器進程占用;
2.在某些操作系統中,如果沒有以超級用戶的身份來運行服務器程序,那么操作系統不允許服務器綁定到1~1023之間的端口。

如果把參數port設為0,表示由操作系統來為服務器分配一個任意可用的端口。由操作系統分配的端口也稱為匿名端口。對于多數服務器,會使用明確的端口,而不會使用匿名端口,因為客戶程序需要事先知道服務器的端口,才能方便地訪問服務器。

三、設定客戶連接請求隊列的長度

當服務器進程運行時,可能會同時監聽到多個客戶的連接請求。

例如,每當一個客戶進程執行以下代碼:

1 Socket socket = new Socket("127.0.0.1",80);

管理客戶連接請求的任務是由操作系統來完成的。操作系統把這些連接請求存儲在一個先進先出的隊列中。許多操作系統限定了隊列的最大長度,一般為50。當隊列中的連接請求達到了隊列的最大容量時,服務器進程所在的主機會拒絕新的連接請求。只有當服務器進程通過ServerSocket的accept()方法從隊列中取出連接請求,使隊列騰出空位時,隊列才能繼續加入新的連接請求。

對于客戶進程,如果它發出的連接請求被加入到服務器的隊列中,就意味著客戶與服務器的連接建立成功,客戶進程從Socket構造方法中正常返回。如果客戶進程發出的連接請求被服務器拒絕,Socket構造方法就會拋出ConnectionException。

ServerSocket構造方法的backlog參數用來顯式設置連接請求隊列的長度,它將覆蓋操作系統限定的隊列的最大長度。值得注意的是,在以下幾種情況中,仍然會采用操作系統限定的隊列的最大長度:

1.backlog參數的值大于操作系統限定的隊列的最大長度;
2.backlog參數的值小于或等于0;
3.在ServerSocket構造方法中沒有設置backlog參數。

四、設定綁定的IP地址

如果主機只有一個IP地址,那么默認情況下,服務器程序就與該IP地址綁定。ServerSocket的第4個構造方法ServerSocket(int port, int backlog, InetAddress bindAddr)有一個bindAddr參數,它顯式指定服務器要綁定的IP地址,該構造方法適用于具有多個IP地址的主機。假定一個主機有兩個網卡,一個網卡用于連接到Internet, IP地址為222.67.5.94,還有一個網卡用于連接到本地局域網,IP地址為192.168.3.4。如果服務器僅僅被本地局域網中的客戶訪問,那么可以按如下方式創建ServerSocket:

ServerSocket serverSocket=new ServerSocket(8000,10,InetAddress.getByName ("192.168.3.4"));

五、接收和關閉與客戶的連接

ServerSocket的accept()方法從連接請求隊列中取出一個客戶的連接請求,然后創建與客戶連接的Socket對象,并將它返回。如果隊列中沒有連接請求,accept()方法就會一直等待,直到接收到了連接請求才返回。

接下來,服務器從Socket對象中獲得輸入流和輸出流,就能與客戶交換數據。當服務器正在進行發送數據的操作時,如果客戶端斷開了連接,那么服務器端會拋出一個IOException的子類SocketException異常。

六、關閉ServerSocket

ServerSocket的close()方法使服務器釋放占用的端口,并且斷開與所有客戶的連接。當一個服務器程序運行結束時,即使沒有執行ServerSocket的close()方法,操作系統也會釋放這個服務器占用的端口。因此,服務器程序并不一定要在結束之前執行ServerSocket的close()方法。

ServerSocket的isClosed()方法判斷ServerSocket是否關閉,只有執行了ServerSocket的close()方法,isClosed()方法才返回true;否則,即使ServerSocket還沒有和特定端口綁定,isClosed()方法也會返回false。

ServerSocket的isBound()方法判斷ServerSocket是否已經與一個端口綁定,只要ServerSocket已經與一個端口綁定,即使它已經被關閉,isBound()方法也會返回true。

如果需要確定一個ServerSocket已經與特定端口綁定,并且還沒有被關閉,則可以采用以下方式:

1 boolean isOpen = serverSocket.isBound() && !serverSocket.isClosed();

七、獲取ServerSocket的信息

ServerSocket的以下兩個get方法可分別獲得服務器綁定的IP地址,以及綁定的端口:

public InetAddress getInetAddress() //獲取服務IP地址
public int getLocalPort() //獲取服務器綁定的端口

八、ServerSocket選項

ServerSocket有以下3個選項。

SO_TIMEOUT:表示等待客戶連接的超時時間。
SO_REUSEADDR:表示是否允許重用服務器所綁定的地址。
SO_RCVBUF:表示接收數據的緩沖區的大小。

具體用法請參見一下個課件,謝謝!

java serversocket參數詳解 http://www.49028c.com/QQ5941/p/4869906.html

 

來源:

http://www.49028c.com/rond/p/3565113.html

http://www.51cto.com/specbook/11/40196.htm

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲国产一区自拍| 91精品国产自产在线| 久久精品电影网| 欧洲成人免费aa| 亚洲国产成人久久综合| 欧美日韩国产丝袜美女| 国产不卡视频在线| 中文字幕精品在线| 国产精品一二区| 日韩视频免费看| 91在线视频精品| 日韩欧美一区视频| 欧美成人免费全部| 久久精品人人做人人爽| 成人精品视频在线| 久久精品国产69国产精品亚洲| 亚洲国产日韩精品在线| 亚洲自拍另类欧美丝袜| 亚洲国产99精品国自产| 欧美性极品xxxx娇小| 伊人久久综合97精品| 久久成人精品电影| 精品成人久久av| 成人h片在线播放免费网站| 国产精品久久久久久久久借妻| 久久精品久久久久| 少妇高潮 亚洲精品| 欧美小视频在线观看| 欧美性猛交xxxx黑人| 92看片淫黄大片欧美看国产片| 中文字幕国产亚洲| 色婷婷综合久久久久中文字幕1| 国产精品伦子伦免费视频| 日韩精品视频在线| 日韩中文字幕在线视频播放| 国产成人91久久精品| 97在线视频精品| 一区二区三区亚洲| 九九九久久久久久| 成人写真视频福利网| 日本久久91av| 亚洲免费小视频| 中文字幕日本欧美| 性色av香蕉一区二区| 日韩av在线资源| 91国产精品电影| 456国产精品| 色久欧美在线视频观看| 免费不卡欧美自拍视频| 欧美一性一乱一交一视频| 亚洲日本aⅴ片在线观看香蕉| 国产精品久久久久影院日本| 国产一区二区三区在线播放免费观看| 亚洲第一福利网站| 91精品视频在线| 久久综合国产精品台湾中文娱乐网| 欧美亚洲视频一区二区| 亚洲男人的天堂在线播放| 黄色精品一区二区| 国产成人精品一区二区在线| 久久香蕉国产线看观看网| 国产亚洲欧美日韩精品| 中文字幕欧美视频在线| 91理论片午午论夜理片久久| 久久艹在线视频| 国产精品久久久久久久久久免费| 欧美性受xxx| 欧美中文字幕在线观看| 怡红院精品视频| 日韩欧美在线视频免费观看| 一本一本久久a久久精品牛牛影视| 日韩精品欧美激情| 高跟丝袜欧美一区| 欧美自拍视频在线观看| 欧美激情一级二级| 亚洲人午夜色婷婷| 国产999精品久久久影片官网| 亚洲激情在线视频| 日韩在线观看免费高清完整版| www.日韩不卡电影av| 国内精品视频在线| 亚洲第一精品电影| 国产精品欧美日韩| 欧美久久精品一级黑人c片| xx视频.9999.com| 久久免费在线观看| 一区二区在线免费视频| 国产精品久久久av| 亚洲丁香婷深爱综合| 亚洲最新av在线| 欧美成人激情视频免费观看| 国产一区二区三区视频在线观看| 亚洲伊人久久综合| 国产成人在线播放| 国产女人18毛片水18精品| 亚洲免费视频网站| 久久久久久999| 日韩欧美在线国产| 亚洲成人精品久久| 免费91在线视频| 国产精品视频男人的天堂| 国产成人精品一区二区在线| 久久亚洲国产精品成人av秋霞| 91精品国产乱码久久久久久蜜臀| 午夜精品一区二区三区av| 国产精品女主播视频| 色偷偷av亚洲男人的天堂| 最近中文字幕mv在线一区二区三区四区| 国产成人精品视频| 美女视频久久黄| 国产精品对白刺激| 黑人精品xxx一区| 亚洲人永久免费| 国产精品96久久久久久| 日韩欧美国产黄色| 日韩欧美在线一区| 亚洲综合av影视| 91po在线观看91精品国产性色| 91精品免费看| 国产黑人绿帽在线第一区| 欧美国产欧美亚洲国产日韩mv天天看完整| 欧美情侣性视频| 亚洲人成77777在线观看网| 欧美极品在线播放| 成人激情春色网| 操人视频在线观看欧美| 久久精品91久久久久久再现| 欧美极品少妇全裸体| 福利二区91精品bt7086| 欧美激情在线观看| 欧美精品在线视频观看| 日韩欧美在线视频日韩欧美在线视频| 日本一区二三区好的精华液| 欧美一级大片在线观看| 国产99久久精品一区二区 夜夜躁日日躁| 久久亚洲私人国产精品va| 欧美日韩亚洲天堂| 精品电影在线观看| 亚洲欧洲一区二区三区在线观看| 国产欧美 在线欧美| 欧美日韩亚洲一区二区| 欧美一级大片视频| 欧美一级电影免费在线观看| 北条麻妃一区二区在线观看| 欧美成年人在线观看| 中文欧美在线视频| 国产福利成人在线| 欧美亚洲国产日本| 91九色国产在线| 91美女高潮出水| 成人av在线网址| 日韩av观看网址| 成人激情春色网| 欧美日韩一区二区免费视频| 久久久精品影院| 久久精品国产99国产精品澳门| 国产精品你懂得| 日韩美女免费线视频| 久热精品视频在线免费观看| 热久久视久久精品18亚洲精品| 成人精品在线视频| 最近2019中文字幕大全第二页| 日韩中文字幕av| 国产精品成熟老女人|