真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JAVASocket的可選項有哪些

這篇文章將為大家詳細講解有關JAVA Socket的可選項有哪些,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

創(chuàng)新互聯(lián)公司自2013年創(chuàng)立以來,先為納溪等服務建站,納溪等地企業(yè),進行企業(yè)商務咨詢服務。為納溪企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務解決您的所有建站問題。

Socket選項指定了Java Socket類所依賴的原生socket如何發(fā)送和接收數(shù)據(jù)。對于客戶端Socket,Java支持9個選項:

    TCP_NODELAY
    SO_BINDADDR
    SO_TIMEOUT
    SO_LINGER
    SO_SNDBUF
    SO_RCVBUF
    SO_KEEPALIVE
    OOBINLINE
    IP_TOS

TCP_NODELAY

public void setTcpNoDelay(boolean on) throws SocketException
public boolean getTcpNoDelay() throws SocketException

設置TCP_NODELAY為true可確保包會盡可能快地發(fā)送,而無論包的大小。
setTcpNoDelay(true)關閉了Socket的緩沖。setTcpNoDelay(false)再次啟用緩沖!
緩沖關閉時,getTcpNoDelay()會返回true,如果緩沖打開,這個方法會返回false;

SO_LINGER

public void setSoLinger(boolean on, int linger) throws SocketException
public int getSoLinger() throws SocketException

SO_LINGER選項指定了Socket關閉時如何處理尚未發(fā)送的數(shù)據(jù)。默認情況下,close()方法將立即返回,但系統(tǒng)仍會嘗試發(fā)送剩余的數(shù)據(jù)。如果延遲時間設置為0,那么當Socket關閉時,所有未發(fā)送的數(shù)據(jù)包都將被丟棄。如果SO_LINGER打開而且延遲時間設置為任意正數(shù),close()方法會阻塞,等待發(fā)送數(shù)據(jù)和接收確認。當過去相應秒數(shù)后,Socket關閉,所有剩余的數(shù)據(jù)都不會發(fā)送,也不會收到確認!
JAVA Socket的可選項有哪些

SO_TIMEOUT

public synchronized void setSoTimeout(int timeout) throws SocketException
public synchronized int getSoTimeout() throws SocketException

正常情況下,嘗試從Socket讀取數(shù)據(jù)時,read()調(diào)用盡可能長的時間來得到足夠的字節(jié)。設置SO_TIMEOUT可以確保這個每次調(diào)用阻塞的時間不會超過某個固定的毫秒數(shù);0被解釋為無限超時,這是默認值!

SO_RCVBUF和SO_SNDBUF

public synchronized void setReceiveBufferSize(int size)throws SocketException
public synchronized int getReceiveBufferSize()throws SocketException
public synchronized void setSendBufferSize(int size)throws SocketException
public synchronized int getSendBufferSize() throws SocketException

SO_RCVBUF選項控制用于網(wǎng)絡輸入的建議的接收緩沖區(qū)大小。SO_SNDBUF選項控制用于網(wǎng)絡輸入的建議的發(fā)送緩沖區(qū)大小;

SO_KEEPALIVE

public void setKeepAlive(boolean on) throws SocketException
public boolean getKeepAlive() throws SocketException

JAVA Socket的可選項有哪些
SO_KEEPALIVE的默認值為false。如果打開了SO_KEEPALIVE,下面的代碼將其關閉:

if(s.getKeepAlive())
{
s.setKeepAlive(false);
}

OOBINLINE
默認情況下,Java會忽略從Socket接收的緊急數(shù)據(jù)。不過,如果你希望接收正常數(shù)據(jù)中的緊急數(shù)據(jù),就需要使用下面的方法設置OOBINLINE選項為true:

public void setOOBInline(boolean on) throws SocketException
public boolean getOOBInline() throws SocketException

OOBINLINE的默認值為false。


SO_REUSEADDR
JAVA Socket的可選項有哪些

public void setReuseAddress(boolean on) throws SocketException
public boolean getReuseAddress() throws SocketException

關閉還是連接

如果socket關閉,isClosed()方法會返回true,否則返回false。如果你不確定一個Socket的狀態(tài),可以用這個方法先進行檢查。
不過,這不是一個萬全的測試。如果一個Socket從一開始就未連接,isClosed()也返回false,盡管Socket實際上根本沒有打開過。
Socket類還有一個isConnected()方法。如果這個Socket確實能夠連接遠程主機,isConnected()方法就會返回true,即使這個Socket已經(jīng)關閉。

要查看一個Socket當前是否打開,需要檢查兩個條件:
//首先isConnected()要返回true,另外isClosed()要返回false。
boolen connected = socket.isConnected() && !socket.isClosed()

關于JAVA Socket的可選項有哪些就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


分享標題:JAVASocket的可選項有哪些
文章URL:http://weahome.cn/article/pjhsdg.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部