新聞中心
網(wǎng)絡(luò)程序,一般是指帶網(wǎng)絡(luò)接連或需要網(wǎng)絡(luò)接連才能使用的或能脫機和聯(lián)機使用的新型智能程序。Java在網(wǎng)絡(luò)編程這個地方做的很好,java的主要目的也是為了網(wǎng)絡(luò)而生的,它能方便的訪問網(wǎng)絡(luò)上的資源。我們這節(jié)課來介紹網(wǎng)絡(luò)通訊的兩種機制:URL通信機制,Socket通信機制。

10多年的襄垣網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。全網(wǎng)整合營銷推廣的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整襄垣建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。成都創(chuàng)新互聯(lián)從事“襄垣網(wǎng)站設(shè)計”,“襄垣網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
URL表示了Internet上一個資源的引用或地址。Java網(wǎng)絡(luò)應(yīng)用程序也是使用URL來定位要訪問的Internet的資源。在jdk里面java.net.URL也是一個類,它來封裝URL的一些細節(jié)。目前大家可以把URL理解為網(wǎng)址,http://www.100jq.com/default.aspx 這就是個URL。http是協(xié)議名(超文本傳輸協(xié)議)用“://”隔開www.100jq.com 是主機名。Default.aspx是文件名。它的端口號沒有寫,默認是80。
實踐:
- import java.net.*;
- public class ParseURL {
- public static void main(String[] args) throws MalformedURLException{
- URL url = new URL("http://www.100jq.com:45175/default.aspx");
- System.out.println("協(xié)議是 "+url.getProtocol());
- System.out.println("主機是 "+url.getHost());
- System.out.println("文件名是 "+url.getFile());
- System.out.println("端口號是 "+url.getPort());
- }}
- /*
- URL這個對象中提供了很多方法像是
- getProtocol()
- getHost()
- getFile()
- getPort()
- */
我們可以通過URL對文件或資源讀取,也可以通過URLConnection讀取,也可以通過這個寫入數(shù)據(jù)限于cgi腳本。
實踐:
- import java.net.*;
- import java.io.*;
- public class URLConnectionReader {
- public static void main(String[] args) throws IOException {
- URL google = new URL("http://www.100jq.com/");
- URLConnection g = google.openConnection();
- BufferedReader in = new BufferedReader(new InputStreamReader(g.getInputStream()));
- String inputLine;
- while ((inputLine=in.readLine())!=null)
- System.out.println(inputLine);
- in.close();
- }
- }
URL和URLConnection類提供了較高層次的網(wǎng)絡(luò)訪問。有時候需要進行較低層次的訪問。編寫C/S模型的程序時,就要使用Socket通信機制了。因為在網(wǎng)絡(luò)上不一定非得訪問文件。
實踐:
- //先寫個客戶端的應(yīng)用
- import java.net.*;
- import java.io.*;
- public class SimpleClient {
- public static void main(String args[]) {
- try {
- // 在5432端口打開服務(wù)器連接
- // 在這里用localhost與127.0.0.1是一個意思
- Socket s1 = new Socket("127.0.0.1", 5432);
- // 對這個端口連接一個reader,注意端口不能夠占用別的
- BufferedReader br = new BufferedReader(
- new InputStreamReader(s1.getInputStream()));
- // 讀取輸入的數(shù)據(jù)并且打印在屏幕上
- System.out.println(br.readLine());
- //當(dāng)完成時關(guān)閉流和連接
- br.close();
- s1.close();
- } catch (ConnectException connExc) {
- System.err.println("Could not connect to the server.");
- } catch (IOException e) {
- // ignore
- }}}
- //這是服務(wù)端的應(yīng)用
- import java.net.*;
- import java.io.*;
- public class SimpleServer {
- public static void main(String args[]) {
- ServerSocket s = null;
- // 注冊服務(wù)端口為5432
- try {
- s = new ServerSocket(5432);
- } catch (IOException e) {
- e.printStackTrace();
- }
- // 運行監(jiān)聽器并接收,永遠循環(huán)下去。因為服務(wù)器總要開啟的
- while (true) {
- try {
- // 等待一個連接的請求
- Socket s1 = s.accept();
- // 得到端口的輸出流
- OutputStream s1out = s1.getOutputStream();
- BufferedWriter bw = new BufferedWriter(
- new OutputStreamWriter(s1out));
- // 發(fā)送一個字符串
- bw.write("百家拳軟件項目研究室歡迎您!/n");
- // 關(guān)閉這個連接, 但不是服務(wù)端的socket
- bw.close();
- s1.close();
- } catch (IOException e) {
- e.printStackTrace();
- }}}}
執(zhí)行這個程序和其它的不太一樣,先用javac將兩個文件編譯之后。然后敲start開啟另一個窗口。用start命令開啟的窗口繼承了原來窗口的特性。
接著在原來的窗口上執(zhí)行服務(wù)端程序java SimpleServer.在新窗口中執(zhí)行java SimpleClient 就會看到結(jié)果了。注意如果如果在啟動服務(wù)端的時候拋出bindException則說明5432這個端口已經(jīng)被別的程序占用著,改成別的端口號就可以了。通常選用端口的時候,其數(shù)字最好不要小于1024,1024一下的端口很多都是專用的端口。
希望通過本文的介紹,能給你帶來幫助。
分享題目:簡單介紹Java網(wǎng)絡(luò)程序
文章地址:http://fisionsoft.com.cn/article/cooepch.html


咨詢
建站咨詢
