標籤:網路編程 ip地址 java基礎
網路編程三要素
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( 網路編程)