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

首頁 > 學院 > 開發設計 > 正文

javase基礎復習攻略《十》

2019-11-14 23:17:41
字體:
來源:轉載
供稿:網友
javase基礎復習攻略《十》

  按照計劃本篇為大家總結JAVA的網絡編程,什么叫網絡編程呢?網絡編程!=網站編程,對于這一點大家一定要注意,很多小朋友都曾經這么認為。既然談到網絡編程,咱們先了解一下網絡的基礎知識,什么是計算機網絡?把分布在不同區域的計算機與專門的外部設備用通信線路互聯成一個規模大、功能強的網絡系統,從而使眾多計算機可以方便的互相傳遞信息,共享硬盤、軟件、數據信息等資源。

  什么是網絡通信協議:計算機網絡中實現通信必須有一些約定即通信協議,對速率、傳輸代碼、代碼結構、傳輸控制步驟、出錯控制等制定標準。

  網絡通信接口:為了是兩個節點之間能進行對話,必須在它們之間建立通信工具(即接口),使彼此之間能夠進行信息交換。接口包括兩類:硬件裝置——實現結點之間的信息傳送。軟件裝置——規定雙方進行通信的約定協議。

  1、網絡分層的參考模型:

  

 2、TCP協議和UDP協議:

  TCP是專門設計用于在不可靠的網絡環境下提供可靠的、端到端的字節流通信協議。它是一種面向連接的協議。

  UDP向應用程序提供一種發送封裝的原始ip數據報的方法,并且發送時無須建立連接。是一種不可靠的連接協議。

 3、TCP編程:

  a、服務器端:

public class TestSeriver {    /**服務器端     * @param args     */    public static void main(String[] args) {        try {            //我們的機器上一個有65526個端口,在我們設置端口時,盡量選擇124以后的端口,因為124之前的端口已經被特定的程序設置,例如:80 :瀏覽器地址端口            ServerSocket ss = new ServerSocket(888);//這里的888:是我們為了方便客戶端的連接設置的端口號            Socket s = ss.accept();//用來接收客戶端的的連接,注意這個方法是阻塞式的,也就是說如果沒有客戶端連接,程序將會停留在這個位置            System.out.

  a、客戶端:

public class TestClient {    /**客戶端     * @param args     */    public static void main(String[] args) {        try {            Socket s = new Socket("127.0.0.1",888);//在這里說明一點,"127.0.0.1":使我們的主機號,888:是我們需要連接的端口號        } catch (UnknownHostException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }    }}

  b、服務器端:

public class TestSeriver1 {    /**服務器端     * @param args     */    public static void main(String[] args) {        try {            ServerSocket ss = new ServerSocket(999);            while(true){                Socket s = ss.accept();                System.out.println("A client connect!");                InputStream is = s.getInputStream();                DataInputStream dis = new DataInputStream(is);                System.out.println(dis.readUTF());//這里的readUTF()方法也是阻塞式的,為了讓看到這個效果我在客戶端輸入的地方添加了一個停頓,已經標注            }        } catch (IOException e) {            e.printStackTrace();        }    }}

  b、客戶端:

public class TestClient1 {    /**客戶端     * @param args     */    public static void main(String[] args) {        try {            Socket s = new Socket("127.0.0.1", 999);            OutputStream os = s.getOutputStream();            DataOutputStream dos = new DataOutputStream(os);            Thread.sleep(3000);//設置停頓三秒鐘,關于這個我在線程的博客里有說明            dos.writeUTF("Hello Server!");        } catch (UnknownHostException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }catch (InterruptedException e) {            // TODO Auto-generated catch block            e.printStackTrace();        }    }}

 4、UDP編程實例:

  a、服務器端:

public class TestUDPServer {    /**服務器端代碼     * @param args     * 對于UDP和TCP的端口號,首先我們可以任意設置,但必須保證范圍在65536以內     * UDP和TCP的端口號沒有關聯,也就是說,UDP和TCP各有65536個端口     */    public static void main(String[] args) throws Exception{        byte [] buf = new byte[1024];//設置存放數據的字符數組        DatagramPacket dp = new DatagramPacket(buf, buf.length);        DatagramSocket ds = new DatagramSocket(5888);//設置端口號        while(true){            ds.receive(dp);//接收客戶端發過來的請求數據            System.out.println(new String(buf, 0, dp.getLength()));            //new String(buf, 0, dp.getLength()):String的構造方法,把一個字節數組轉化為一個String類數據        }    }}

  a、客戶端:

public class TestUDPClient {    /**客戶端代碼實例     * @param args     * SocketAddress:網絡上的地址,不但包括IP,還包括端口號等等     * InetAddress:IP地址的超級     * InetSocketAddress:IP地址+端口號     */    public static void main(String[] args) throws Exception{        byte [] buf = new byte[1024];        buf = (new String("Hello")).getBytes();//將String類型的數據轉換為字符數組        DatagramPacket dp = new DatagramPacket(buf, buf.length, new InetSocketAddress("127.0.0.1",5888));        DatagramSocket ds = new DatagramSocket(9999);//設置客戶端發送數據的端口號        ds.send(dp);//向服務器發送數據        ds.close();    }}

  b、服務器端:

public class TestUDPServer1 {    public static void main(String[] args) throws Exception{        byte [] buf = new byte[1024];//設置存放數據的字符數組        DatagramPacket dp = new DatagramPacket(buf, buf.length);        DatagramSocket ds = new DatagramSocket(5888);//設置端口號        while(true){            ds.receive(dp);//接收客戶端發過來的請求數據            ByteArrayInputStream bais = new ByteArrayInputStream(buf);            DataInputStream dis = new DataInputStream(bais);            System.out.println(dis.readLong());        }    }}

  b、客戶端:

public class TestUDPClient1 {    public static void main(String[] args) throws Exception{        Long L = 10000L;        ByteArrayOutputStream baos = new ByteArrayOutputStream();        DataOutputStream dos = new DataOutputStream(baos);//DataOutputStream:可以直接寫一個Long類型的數據        dos.writeLong(L);        byte [] buf = baos.toByteArray();        DatagramPacket dp = new DatagramPacket(buf, buf.length, new InetSocketAddress("127.0.0.1",5888));        DatagramSocket ds = new DatagramSocket(9999);//設置客戶端發送數據的端口號        ds.send(dp);//向服務器發送數據        ds.close();    }}

  好了,到這里就為大家把JAVA中的網絡編程總結完畢。


  到今天對于JAVASE基礎知識的總結就為大家分析完畢,一定存在一些問題,還望大家多多指點,再接下來的日子里,我還為大家分享jsp、JAVA SSH框架以及Android方面的基礎知識總結,我一直相信,只有把基礎打牢,才能走的更遠,讓我們一起加油吧。大家如果有什么好的理念,還望對的指點。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 项城市| 武汉市| 本溪市| 秦安县| 邳州市| 阿克苏市| 蒲城县| 惠安县| 恩平市| 开化县| 布拖县| 江源县| 南投市| 虎林市| 漠河县| 兰州市| 黔东| 长宁县| 海伦市| 滨州市| 信宜市| 津南区| 化德县| 株洲县| 延寿县| 延边| 中江县| 平塘县| 台山市| 宁安市| 甘南县| 贵定县| 钦州市| 麻江县| 马公市| 谷城县| 江北区| 库车县| 克山县| 乌兰察布市| 三河市|