URL類是java.net包中的一個重要的類,URL的實例封裝着一個統一資源定位符,使用URL建立對象的應用程序稱做客戶端程序。java
構造方法git
public URL (String spec) throws MalformedURLException//所包含的資源位默認的資源(主頁) public URL(String protocol,String host,String file) throws MalformedURLException//protocol指定協議,host指定地址,file指定資源
InputStream openStream()
方法返回一個輸入流。地址的表示:域名和IP地址編程
getByName(String s)
將一個域名或 IP 地址傳遞給該方法的參數 S,得到一個 InetAddress 對象;public String getHostName()
獲取InetAddress對象所含的域;public String getHostAddress()
獲取InetAddress對象所含的IP地址。獲取本地機的地址:可使用InetAddress類的靜態方法getLocalHost()得到一個InetAddress對象,該對象含有本地機的域名和IP地址。服務器
當兩個程序須要通訊時,它們能夠經過使用Socket類創建套接字對象並鏈接在一塊兒(端口號和IP地址的組合得出一個網絡套接字)。網絡
Socket類的構造方法:Socket(String host, int port)
,參數host是服務器的IP地址,port是端口號。分佈式
//創建鏈接到服務器的套接字對象 try { Socket clientSocket = new Socket("http://192.168.0.78",2010); } //(IP,端口號) catch(IOException e) {} ServerSocket 的構造方法: ServerSocket(int port) //其中port 是一個端口號。
//創建ServerSocket對象 try{ ServerSocket serverForClient = new ServerSocket(2010); }//(端口號) catch(IOException e) {} //使用accept()方法將客戶端和服務器端套接字鏈接起來 try{ Socket sc = serverForClient.accept(); } catch(IOException e) {}
從套接字鏈接中讀取數據與從文件中讀取數據有着很大的不一樣,從文件中讀取數據時,全部的數據都已經在文件中了,而使用套接字鏈接時,可能在另外一端數據發送以前,就已經開始讀取了。學習
注意:accept方法會阻塞線程的執行,直到接收到客戶的呼叫。測試
套接字通訊基本原則:服務器應當啓動一個專門的線程,在該線程中和客戶的套接字創建鏈接。因爲套接字的輸入流在讀取信息時可能發生阻塞,客戶端和服務器端都須要在一個單獨的線程中讀取信息。url
套接字是基於TCP協議的網絡通訊。.net
UDP的信息傳遞更快,但不提供可靠性保障,即沒法知道數據可否正確到達目的地,也不能肯定數據到達目的地的順序是否和發送的順序相同。
用DatagramPacket的如下兩個構造方法建立待發送的數據包:
DatagramPacket(byte data[],int length,InetAddtress address,int port) DatagramPack(byte data[],int offset,int length,InetAddtress address,int port)
要廣播或接收廣播的主機都必須加入到同一個D類地址。
D類地址不是用來你表明位置的,即在網絡上不能使用D類地址去查找計算機。
RMI是一種分佈式技術,使用RMI可讓一個虛擬機上的應用程序請求調用位於網絡上另外一處虛擬機上的對象。
代理的特色是它與遠程對象實現了相同的接口。
存根是一種特殊的字節碼,並讓這個存根產生的對象做爲遠程對象的代理,其字節碼後綴爲"_Stub"。
遠程對象必須實現java.rmi包中的Remote接口。
代理的特色是它與遠程對象實現了相同的接口
問題1:課上測試的gmssl庫的使用,我在安裝配置時,出現了以下問題:
解決1:在終端輸入
ln -s /usr/local/lib/libssl.so.1.1 /usr/lib/libssl.so.1.1 ln -s /usr/local/lib/libcrypto.so.1.1 /usr/lib/libcrypto.so.1.1
問題2:感受在一臺機器上鍊接沒什麼用,嘗試在兩臺電腦上使用套接字鏈接服務器
實現2:剛開始一直連不上,後來發現端口要設置成一個1024以上的自定義端口,ip要設置成對方電腦的ip4地址
鏈接成功~