国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

java.net.Socket用法詳解

2019-11-14 15:31:29
字體:
供稿:網(wǎng)友

一、Socket構(gòu)造方法

Socket() 
Socket(InetAddress address, int port) throws UnknowHostException, IOException 
Socket(InetAddress address, int port, InetAddress localAddr, int localPort) throws IOException 
Socket(String host, int port) throws UnknowHostException, IOException 
Socket(String host, int port, InetAddress localAddr, int localPort) throws IOException 

 

除了第一個(gè)不帶參數(shù)的構(gòu)造方法以外, 其他構(gòu)造方法都會(huì)試圖建立與服務(wù)器的連接, 如果連接成功, 就返回 Socket對(duì)象; 如果因?yàn)槟承┰蜻B接失敗, 就會(huì)拋出IOException .

 

二、Socket常用方法

getInetAddress();      遠(yuǎn)程服務(wù)端的ip地址
getPort();          遠(yuǎn)程服務(wù)端的端口
getLocalAddress()      本地客戶端的IP地址
getLocalPort()        本地客戶端的端口
 
getInputStream();     獲得輸入流,同時(shí)返回一個(gè)InputStream對(duì)象實(shí)例。
getOutStream();      獲得輸出流,同時(shí)返回一個(gè)OutputStream對(duì)象實(shí)例。
值得注意的是,在這些方法里面,最重要的就是getInputStream()和getOutputStream()了。
 
注意:其中g(shù)etInputStream和getOutputStream方法均會(huì)產(chǎn)生一個(gè)IOException,它必須被捕獲,因?yàn)樗鼈兎祷氐牧鲗?duì)象,通常都會(huì)被另一個(gè)流對(duì)象使用。
 

三、Socket狀態(tài)

isClosed();            //連接是否已關(guān)閉,若關(guān)閉,返回true;否則返回false
isConnect();      //如果曾經(jīng)連接過,返回true;否則返回false
isBound();            //如果Socket已經(jīng)與本地一個(gè)端口綁定,返回true;否則返回false
如果要確認(rèn)Socket的狀態(tài)是否處于連接中,下面語句是很好的判斷方式。
 
boolean isConnection=socket.isConnected() && !socket.isClosed();   //判斷當(dāng)前是否處于連接
 
半關(guān)閉Socket
很多時(shí)候,我們并不知道在獲得的輸入流里面到底讀多長(zhǎng)才結(jié)束。下面是一些比較普遍的方法:
  • 自定義標(biāo)識(shí)符(譬如下面的例子,當(dāng)受到“bye”字符串的時(shí)候,關(guān)閉Socket)
  • 告知讀取長(zhǎng)度(有些自定義協(xié)議的,固定前幾個(gè)字節(jié)表示讀取的長(zhǎng)度的)
  • 讀完所有數(shù)據(jù)
  • 當(dāng)Socket調(diào)用close的時(shí)候關(guān)閉的時(shí)候,關(guān)閉其輸入輸出流

四、Socket參數(shù)選項(xiàng)

  • TCP_NODELAY:  表示立即發(fā)送數(shù)據(jù)

  • SO_RESUSEADDR:  表示是否允許重用socket所綁定的本地地址

  • SO_TIMEOUT :  表示接收數(shù)據(jù)時(shí)的等待超時(shí)時(shí)間 。 單位為毫秒,默認(rèn)值為0 , 表示永遠(yuǎn)等待。

  • SO_LINGER:  表示當(dāng)執(zhí)行 socket的close方法的時(shí)候,是否立即關(guān)閉底層的socket 。 這個(gè)單位是秒。

  • SO_SNFBUF:  發(fā)送數(shù)據(jù)的緩沖區(qū)大小

  • SO_RCVBUF:  接收數(shù)據(jù)的緩沖區(qū)大小

  • SO_KEEPLIVE:  表示對(duì)于長(zhǎng)時(shí)間處于空閑狀態(tài)的socket,是否要自動(dòng)把他關(guān)閉

  • OOBINLINE: 表示是否支持發(fā)送一個(gè)字節(jié)的tcp緊急數(shù)據(jù)

  • backlog : 輸入連接指示(對(duì)連接的請(qǐng)求)的最大隊(duì)列長(zhǎng)度被設(shè)置為 backlog 參數(shù)。如果隊(duì)列滿時(shí)收到連接指示,則拒絕該連接。

 

備注:具體各參數(shù)選項(xiàng)的講解下一個(gè)分析說明

java socket參數(shù)詳解 http://m.survivalescaperooms.com/QQ5941/p/4857656.html

 

參考來源:

  http://my.oschina.net/u/725800/blog/303634

  http://m.survivalescaperooms.com/rond/p/3565113.html

  

 

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 遂平县| 太保市| 广平县| 南郑县| 林西县| 临西县| 丹凤县| 灵武市| 昌黎县| 中西区| 汶川县| 通辽市| 惠东县| 安徽省| 留坝县| 霞浦县| 宜宾县| 南郑县| 屏边| 新平| 鲁甸县| 琼中| 铜鼓县| 体育| 淅川县| 安泽县| 紫云| 晴隆县| 石嘴山市| 阜平县| 康定县| 潍坊市| 正定县| 太白县| 湘阴县| 罗城| 绥中县| 盘锦市| 大同市| 延边| 两当县|