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

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

Java 網(wǎng)絡(luò)程序

2019-11-17 04:10:34
字體:
供稿:網(wǎng)友

java在網(wǎng)絡(luò)編程這個(gè)地方做的很好,java的主要目的也是為了網(wǎng)絡(luò)而生的,它能方便的訪問網(wǎng)絡(luò)上的資源。我們這節(jié)課來介紹網(wǎng)絡(luò)通訊的兩種機(jī)制:URL通信機(jī)制,Socket通信機(jī)制。
URL表示了Internet上一個(gè)資源的引用或地址。Java網(wǎng)絡(luò)應(yīng)用程序也是使用URL來定位要訪問的Internet的資源。在jdk里面java.net.URL也是一個(gè)類,它來封裝URL的一些細(xì)節(jié)。目前大家可以把URL理解為網(wǎng)址,http://www.100jq.com/default.aspx 這就是個(gè)URL。http是協(xié)議名(超文本傳輸協(xié)議)用“://”隔開www.100jq.com 是主機(jī)名。Default.aspx是文件名。它的端口號(hào)沒有寫,默認(rèn)是80。
實(shí)踐:
import java.net.*;
public class ParseURL {
public static void main(String[] args) throws MalformedURLException{
URL url = new URL("System.out.System.out.println("主機(jī)是 "+url.getHost());
System.out.println("文件名是 "+url.getFile());
System.out.println("端口號(hào)是 "+url.getPort());
}}
/*
URL這個(gè)對(duì)象中提供了很多方法像是
getProtocol()
getHost()
getFile()
getPort()
*/
我們可以通過URL對(duì)文件或資源讀取,也可以通過URLConnection讀取,也可以通過這個(gè)寫入數(shù)據(jù)限于cgi腳本。
實(shí)踐:
import java.net.*;
import java.io.*;
public class URLConnectionReader {
public static void main(String[] args) throws IOException {
URL google = new URL("
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ò)訪問。有時(shí)候需要進(jìn)行較低層次的訪問。編寫C/S模型的程序時(shí),就要使用Socket通信機(jī)制了。因?yàn)樵诰W(wǎng)絡(luò)上不一定非得訪問文件。
實(shí)踐://先寫個(gè)客戶端的應(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是一個(gè)意思
Socket s1 = new Socket("127.0.0.1", 5432);
// 對(duì)這個(gè)端口連接一個(gè)reader,注意端口不能夠占用別的
BufferedReader br = new BufferedReader(
new InputStreamReader(s1.getInputStream()));
// 讀取輸入的數(shù)據(jù)并且打印在屏幕上
System.out.println(br.readLine());
//當(dāng)完成時(shí)關(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;
// 注冊(cè)服務(wù)端口為5432
try {
s = new ServerSocket(5432);
} catch (IOException e) {
e.printStackTrace();
}
// 運(yùn)行監(jiān)聽器并接收,永遠(yuǎn)循環(huán)下去。因?yàn)榉?wù)器總要開啟的
while (true) {
try {
// 等待一個(gè)連接的請(qǐng)求
Socket s1 = s.accept();
// 得到端口的輸出流
OutputStream s1out = s1.getOutputStream();
BufferedWriter bw = new BufferedWriter(
new OutputStreamWriter(s1out));
// 發(fā)送一個(gè)字符串
bw.write("百家拳軟件項(xiàng)目研究室歡迎您!/n");
// 關(guān)閉這個(gè)連接, 但不是服務(wù)端的socket
bw.close();
s1.close();
} catch (IOException e) {
e.printStackTrace();
}}}}

執(zhí)行這個(gè)程序和其它的不太一樣,先用javac將兩個(gè)文件編譯之后。然后敲start開啟另一個(gè)窗口。用start命令開啟的窗口繼承了原來窗口的特性。如圖26-1所示
圖26-1
接著在原來的窗口上執(zhí)行服務(wù)端程序java SimpleServer.在新窗口中執(zhí)行java SimpleClient 就會(huì)看到結(jié)果了。注意如果如果在啟動(dòng)服務(wù)端的時(shí)候拋出bindException則說明5432這個(gè)端口已經(jīng)被別的程序占用著,改成別的端口號(hào)就可以了。通常選用端口的時(shí)候,其數(shù)字最好不要小于1024,1024一下的端口很多都是專用的端口。


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 日土县| 炎陵县| 阿拉善盟| 汉阴县| 德州市| 永丰县| 盐池县| 贵州省| 海口市| 成都市| 莱西市| 平和县| 永兴县| 当雄县| 余江县| 大厂| 冀州市| 太康县| 诏安县| 右玉县| 阿城市| 上高县| 齐齐哈尔市| 安陆市| 富裕县| 崇仁县| 德庆县| 垣曲县| 上思县| 高要市| 舞钢市| 独山县| 元谋县| 澄城县| 安多县| 如皋市| 临邑县| 罗定市| 易门县| 乌审旗| 厦门市|