Java 网络实例三(获取URL响应头的日期信息、获取URL响应头信息、解析URL、ServerSocket和Socket通信实例)
生活随笔
收集整理的這篇文章主要介紹了
Java 网络实例三(获取URL响应头的日期信息、获取URL响应头信息、解析URL、ServerSocket和Socket通信实例)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
獲取 URL響應頭的日期信息
以下實例演示了如何使用 HttpURLConnection 的 httpCon.getDate() 方法來獲取 URL響應頭的日期信息:
import java.net.HttpURLConnection; import java.net.URL; import java.util.Date;public class Main{public static void main(String args[]) throws Exception {URL url = new URL("http://www.sanguo.com");HttpURLConnection httpCon = (HttpURLConnection) url.openConnection();long date = httpCon.getDate();if (date == 0)System.out.println("無法獲取信息。");elseSystem.out.println("Date: " + new Date(date));} }以上代碼運行輸出結果為:
Date: Mon May 04 11:57:06 CST 2015?
獲取 URL 響應頭信息
以下實例演示了如何獲取指定 URL 的響應頭信息:
import java.io.IOException; import java.net.URL; import java.net.URLConnection; import java.util.Map; import java.util.Set;public class Main {public static void main(String[] args) throws IOException{URL url = new URL("http://www.sanguo.com");URLConnection conn = url.openConnection();Map headers = conn.getHeaderFields();Set<String> keys = headers.keySet();for( String key : keys ){String val = conn.getHeaderField(key);System.out.println(key+" "+val);}System.out.println( conn.getLastModified() );} }以上代碼運行輸出結果為:
Transfer-Encoding chunked null HTTP/1.1 200 OK Server Tengine/1.3.0 Connection keep-alive Vary Cookie Date Mon, 04 May 2015 03:54:05 GMT X-Pingback http://www.sanguo.com/xmlrpc.php X-Powered-By PHP/5.3.15 Content-Type text/html; charset=UTF-8?
解析 URL
以下實例演示了如何使用 net.URL 類的 url.getProtocol() ,url.getFile() 等方法來解析 URL 地址:
import java.net.URL;public class Main {public static void main(String[] args) throws Exception {URL url = new URL("http://www.sanguo.com/html/html-tutorial.html");System.out.println("URL 是 " + url.toString());System.out.println("協(xié)議是 " + url.getProtocol());System.out.println("文件名是 " + url.getFile());System.out.println("主機是 " + url.getHost());System.out.println("路徑是 " + url.getPath());System.out.println("端口號是 " + url.getPort());System.out.println("默認端口號是 " + url.getDefaultPort());} }以上代碼運行輸出結果為:
URL 是 http://www.sanguo.com/html/html-tutorial.html 協(xié)議是 http 文件名是 /html/html-tutorial.html 主機是 www.sanguo.com 路徑是 /html/html-tutorial.html 端口號是 -1 默認端口號是 80?
ServerSocket 和 Socket 通信實例
1、建立服務器端
- 服務器建立通信ServerSocket
- 服務器建立Socket接收客戶端連接
- 建立IO輸入流讀取客戶端發(fā)送的數據
- 建立IO輸出流向客戶端發(fā)送數據消息
服務器端代碼:
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.ServerSocket; import java.net.Socket;public class Server {public static void main(String[] args) {try {ServerSocket ss = new ServerSocket(8888);System.out.println("啟動服務器....");Socket s = ss.accept();System.out.println("客戶端:"+s.getInetAddress().getLocalHost()+"已連接到服務器");BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));//讀取客戶端發(fā)送來的消息String mess = br.readLine();System.out.println("客戶端:"+mess);BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));bw.write(mess+"\n");bw.flush();} catch (IOException e) {e.printStackTrace();}} }以上代碼運行輸出結果為:
啟動服務器....2、建立客戶端
- 創(chuàng)建Socket通信,設置通信服務器的IP和Port
- 建立IO輸出流向服務器發(fā)送數據消息
- 建立IO輸入流讀取服務器發(fā)送來的數據消息
客戶端代碼:
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.Socket; import java.net.UnknownHostException;public class Client {public static void main(String[] args) {try {Socket s = new Socket("127.0.0.1",8888);//構建IOInputStream is = s.getInputStream();OutputStream os = s.getOutputStream();BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));//向服務器端發(fā)送一條消息bw.write("測試客戶端和服務器通信,服務器接收到消息返回到客戶端\n");bw.flush();//讀取服務器返回的消息BufferedReader br = new BufferedReader(new InputStreamReader(is));String mess = br.readLine();System.out.println("服務器:"+mess);} catch (UnknownHostException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}} }以上代碼運行輸出結果為:
服務器:測試客戶端和服務器通信,服務器接收到消息返回到客戶端?
總結
以上是生活随笔為你收集整理的Java 网络实例三(获取URL响应头的日期信息、获取URL响应头信息、解析URL、ServerSocket和Socket通信实例)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: eclipse常用设置及调试快捷键
- 下一篇: RSA算法与DSA算法的区别