java基礎11( 網路編程)

來源:互聯網
上載者:User

標籤:網路編程   ip地址   java基礎   

  1. 網路編程三要素

      IP:一個電腦的標識

      連接埠:應用程式都會對應一個連接埠,用來進行通訊,有效連接埠:0~65535,其中0~1024系統使用或保留連接埠。

      協議:兩種協議(UDP,TCP)

      特殊IP地址:127.0.0.1本地迴環地址用來做一些本地測試

    pingIP地址; 用來檢測本機是否可以和指定的IP地址的電腦可以進行正常通訊

    ipconfig     用來查看IP地址

    xxx.xxx.xxx.255  廣播位址

        

         連接埠:

               物理連接埠:物理裝置對應的連接埠, 網卡口

               邏輯連接埠:用來標示我們的電腦上的進程,就是上文所說的連接埠

        協議:

            UDP

                把資料打成一個資料包 , 不需要建立串連

                資料包的大小有限制不能超過64k

                因為無串連,所以屬於不可靠協議(可能遺失資料)

                因為無串連 ,所以效率高

            TCP

                需要建立串連,形成串連通道

                資料可以使用串連通道直接進行傳輸,無大小限制

                因為有連結,所以屬於可靠協議

                因為有連結,所以效率低

 2.InetAddress類

         A.InetAddress概述:IP地址的描述類,為了方便我們對IP地址的擷取和操作,java提供了一個類

      InetAddress 供我們使用,此類表示互連網協議 (IP) 地址。 

         B.InetAddress類的常見功能

              public static InetAddress getByName(String host)( host: 可以是主機名稱,也可以是IP地址的         字串表現形式)

              public String getHostAddress()返回 IP 位址字串(以文本表現形式)。

              public String getHostName()擷取此 IP 位址的主機名稱。 


               //通過主機IP擷取inetaddress對象

InetAddress address = InetAddress.getByName("192.168.20.16");

//返回 IP 位址字串(以文本表現形式)

System.out.println(address.getHostAddress());

//擷取此 IP 位址的主機名稱

System.out.println(address.getHostName());




3.UDP協議

       UDP協議:

           UDP通訊步驟:

               發送端步驟(用戶端):

                 A.建立UDP發送資料端Socket對象

                 B.建立資料包,並給出資料,把資料打包

                 C.通過Socket對象發送資料包 

                 D.釋放資源

               接收端步驟(伺服器端):

                 A.建立UDP接收資料端Socket對象

                 B.建立一個接收資料的資料包

                 C.接收資料,資料在資料包中

                 D.解析資料包,並把資料顯示在控制台

                 E.釋放資源


package com.xayd_03;


import java.net.DatagramPacket;

import java.net.DatagramSocket;


// UDP協議接收資料步驟:

// A:建立UDP接收資料端Socket對象

// B:建立一個接收資料的資料包

// C:接收資料,資料在資料包中

// D:解析資料包,並把資料顯示在控制台

// E:釋放資源

public class udpServer {

public static void main(String[] args) throws Exception {

//建立UDP接收資料端Socket對象

DatagramSocket ds = new DatagramSocket(2222);

//建立一個接收資料的資料包

byte [] bys = new byte [1024];

int len = bys.length;

DatagramPacket dp = new DatagramPacket(bys, len);

//接收資料

while(true){

ds.receive(dp);

//解析資料包,並把資料顯示在控制台

byte[] data = dp.getData();

int length = dp.getLength();

System.out.println(new String(data,0,length));

}

}


}


package com.xayd_03;


import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

import java.util.Scanner;


// UDP發送資料的步驟:

//  A:建立UDP發送資料端Socket對象

//  B:建立資料包,並給出資料,把資料打包

//  C:通過Socket對象發送資料包 

//  D:釋放資源

 

public class udpClient {

public static void main(String[] args) throws Exception {

//建立udp發送資料端socket對象

DatagramSocket ds = new DatagramSocket();

InetAddress address = InetAddress.getByName("192.168.20.16");

int port = 2222;

//建立鍵盤錄入對象

Scanner sc = new Scanner(System.in);

String line;

while((line=sc.nextLine())!=null){

//鍵盤錄入資料

byte [] buf = "hello".getBytes();

int len = buf.length;

DatagramPacket dp = new DatagramPacket(buf, len, address, port);

//發送資料

   ds.send(dp);

}

//釋放資源

ds.close();

}


}


4.TCP協議

        TCP協議:

           TCp協議通訊步驟:

                發送端(用戶端):

                   A.建立TCP協議發送端Socket對象,指定伺服器IP及連接埠

                   B.擷取輸出資料流,並寫資料

                   C.釋放資源

 

                接收端(伺服器端):

                   A.建立TCP協議接收端Socket對象

                   B.監聽用戶端串連

                   C.擷取輸入資料流,並讀取資料,顯示在控制台

                   D.釋放資源

        

package com.xayd_05;

//用TCP協議寫一個資料的發送和接收,接收端接收到資料之後給發送端一個反饋

import java.io.OutputStream;

import java.net.Socket;



public class tcpClient {

public static void main(String[] args) throws Exception {

//建立tcp用戶端的socket對象

Socket sk = new Socket("192.168.20.16",2222);

//從通道中擷取輸出資料流對象

OutputStream os = sk.getOutputStream();

//給通道中寫資料

os.write("how are you".getBytes());

//釋放資源

sk.close();

}


}


 

package com.xayd_05;


import java.io.InputStream;

import java.io.OutputStream;

import java.net.ServerSocket;

import java.net.Socket;


public class tcpServer {

public static void main(String[] args) throws Exception {

//建立TCP協議接收端Socket對象

ServerSocket ss = new ServerSocket(2222);

//監聽用戶端串連

Socket sk = ss.accept();

//從通道中讀取來自用戶端的資料

InputStream is = sk.getInputStream();

//擷取輸入資料流,並讀取資料,顯示在控制台

byte[] bys = new byte[1024] ;

int len = is.read(bys) ;

System.out.println(new String(bys,0,len));

//給用戶端反饋

OutputStream os = sk.getOutputStream();

os.write("fine,thinks".getBytes());

//釋放資源

sk.close();

}

}


java基礎11( 網路編程)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.