Java核心技術(shù)-網(wǎng)絡(luò)-創(chuàng)新互聯(lián)

套接字

使用java連接到服務(wù)器

成都創(chuàng)新互聯(lián)公司為企業(yè)級(jí)客戶提高一站式互聯(lián)網(wǎng)+設(shè)計(jì)服務(wù),主要包括做網(wǎng)站、網(wǎng)站建設(shè)、app軟件開發(fā)公司重慶小程序開發(fā)公司、宣傳片制作、LOGO設(shè)計(jì)等,幫助客戶快速提升營(yíng)銷能力和企業(yè)形象,創(chuàng)新互聯(lián)各部門都有經(jīng)驗(yàn)豐富的經(jīng)驗(yàn),可以確保每一個(gè)作品的質(zhì)量和創(chuàng)作周期,同時(shí)每年都有很多新員工加入,為我們帶來(lái)大量新的創(chuàng)意。 
public static void main(String[] args) throws IOException {try (
        Socket socket = new Socket("time-a.nist.gov", 13);
        Scanner scanner = new Scanner(socket.getInputStream())
    ){while (scanner.hasNextLine()) {String line = scanner.nextLine();
            System.out.println(line);
        }
    }
}

設(shè)置超時(shí)時(shí)間

socket.setSoTimeout(10000);

new Socket(host, port)這個(gè)方法會(huì)一直地阻塞下去,直到建立了到達(dá)主機(jī)地初始連接為止??梢酝ㄟ^(guò)先構(gòu)建一個(gè)無(wú)連接地套接字,然后再使用一個(gè)超時(shí)來(lái)進(jìn)行攔截地方式解決這個(gè)問(wèn)題。

Socket socket = new Socket();
socket.connect(new InetSocketAddress(host, port), timeout);

靜態(tài)地getByName方法可以返回代表某個(gè)主機(jī)地InetAddress對(duì)象。如:

InetAddress address = InetAddress.getByName("time-a.nist.gov");
String hostAddress = address.getHostAddress();

如果主機(jī)名對(duì)應(yīng)多個(gè)因特網(wǎng)地址,當(dāng)訪問(wèn)主機(jī)時(shí),隨隨機(jī)選取其中一個(gè),可以通過(guò)getAllByName方法獲得所有主機(jī)。

InetAddress[] allByName = InetAddress.getAllByName("www.baidu.com");
for (InetAddress inetAddress : allByName) {System.out.println(inetAddress.getHostAddress());
}

獲取本機(jī)地址

InetAddress localHost = InetAddress.getLocalHost();
System.out.println(localHost.getHostAddress());
服務(wù)器套接字

一旦啟動(dòng)了服務(wù)器程序,它便會(huì)等待某個(gè)客戶端連接到它的接口。

ServerSocket serverSocket = new ServerSocket(8189);

用于建立一個(gè)負(fù)責(zé)監(jiān)控端口8189的服務(wù)器

Socket accept = serverSocket.accept();

一旦有人通過(guò)網(wǎng)絡(luò)發(fā)送了正確的連接請(qǐng)求,并以此連接到了端口上,該方法就會(huì)返回一個(gè)表示連接已經(jīng)建立的Socket對(duì)象。我們可以使用這個(gè)對(duì)象來(lái)得到輸入流和輸出流。

InputStream inputStream = accept.getInputStream();
OutputStream outputStream = accept.getOutputStream();

服務(wù)器發(fā)送給服務(wù)器輸出流的所有信息都會(huì)成為哭護(hù)短程序的輸入,同時(shí)來(lái)自客戶端程序的所有輸出都會(huì)被包含在服務(wù)器輸入流中。我們可以將流轉(zhuǎn)換成掃描器和寫入器。

Scanner in = new Scanner(inputStream);
PrintWriter out = new PrintWriter(new OutputStreamWriter(outputStream));

完整代碼

public static void main(String[] args) throws IOException {ServerSocket serverSocket = new ServerSocket(8189);
    Socket accept = serverSocket.accept();

    InputStream inputStream = accept.getInputStream();
    OutputStream outputStream = accept.getOutputStream();
    Scanner in = new Scanner(inputStream);
    PrintWriter out = new PrintWriter(new OutputStreamWriter(outputStream), true);
    //out.println("ljq");
    boolean done = false;
    while (!done && in.hasNextLine()) {String line = in.nextLine();
        out.println("ljq: " + line);
        if (line.trim().equals("no")) done = true;
    }
    accept.close();
}

半關(guān)閉

套接字連接的一端可以終止其輸出,同時(shí)仍舊可以接收來(lái)自另一端的數(shù)據(jù)??梢酝ㄟ^(guò)關(guān)閉一個(gè)套接字的輸出流來(lái)表示發(fā)送給服務(wù)器的請(qǐng)求數(shù)據(jù)已經(jīng)結(jié)束,但是必須保持輸入流處于打開狀態(tài)。

Socket accept = serverSocket.accept();
accept.shutdownOutput();
獲取web數(shù)據(jù)URLURI

URLURLConnection類封裝了大量復(fù)雜的實(shí)現(xiàn)細(xì)節(jié),這些細(xì)節(jié)涉及如何從遠(yuǎn)程站點(diǎn)獲取信息。

URL url = new URL("urlString");

如果只是想獲得該資源的內(nèi)容,可以使用URL類中的openStream方法。該方法將產(chǎn)生一個(gè)InputStream對(duì)象,然后就可以按照一般的用法來(lái)使用這個(gè)對(duì)象了,如下所示:

URL url = new URL("urlString");
InputStream inputStream = url.openStream();
Scanner scanner = new Scanner(inputStream);

java.net對(duì)URL(統(tǒng)一資源定位符)和URI(統(tǒng)一資源標(biāo)識(shí)符)進(jìn)行了非常有用的區(qū)分。

URI是個(gè)純粹的語(yǔ)法結(jié)構(gòu),包含用來(lái)指定Web資源的字符串的各種組成部分。URLURI的一個(gè)特例,它包含了用于定位Web資源的足夠信息。

javaURI類不能用于訪問(wèn)資源,它的唯一作用就是解析。但是,URL類可以打開一個(gè)連接到資源的流。因此URL類只能用于那些java類庫(kù)知道該如何處理的模式,如http、httpsftp等等。

你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧

分享名稱:Java核心技術(shù)-網(wǎng)絡(luò)-創(chuàng)新互聯(lián)
瀏覽地址:http://bm7419.com/article38/igdpp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè)、響應(yīng)式網(wǎng)站、自適應(yīng)網(wǎng)站、標(biāo)簽優(yōu)化、全網(wǎng)營(yíng)銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都定制網(wǎng)站建設(shè)