一:InetAddress类
1.什么是InetAddress
此类表示Internet协议(IP)地址。
2.常见用法:
InetAddress inetAddress = InetAddress.getByName("www.jd.com");
InetAddress inetAddress1 = InetAddress.getLocalHost();
InetAddress inetAddress2= InetAddress.getByName("127.0.0.1");
System.out.println(inetAddress);
System.out.println("ip:"+inetAddress.getHostAddress());
System.out.println("域名:"+inetAddress.getHostName());
System.out.println(inetAddress1);
3.补充说明
本机IP:127.0.0.1 IPv4: IPv4.的IP地址由32位二进制数组成,为便于使用,常以XXX.XXX.XXX.XXX形式表现,每组XXX代表小于或等于255的10进制数,该表示方法称为点分十进制。 例如維基媒體的一个IP位址是208.80.152.2。 位址可分为A、B、C、D、E五大类,其中E类属于特殊保留地址。 IPv6: IPv6 地址的长度为128 位,由八个16 位字段组成,相邻字段用冒号分隔。 IPv6 地址中的每个字段都必须包含一个十六进制数字,而IPv4 地址则以点分十进制表示法表示
二:Socket
1.什么是Socket
Socket:套接字 该类实现客户端套接字(也称为“套接字”)。 套接字是两台机器之间通讯的端点。 套接字的实际工作由SocketImpl类的实例执行。 应用程序通过更改创建套接字实现的套接字工厂,可以配置自己创建适合本地防火墙的套接字。
2.Socket常用方法
Socket socket = new Socket(InetAddress serverIp,String port);
socket.getInputStream();
socket.getOutputStream();
socket.close();
ServerSocket serverSocket = new ServerSocket(String port);
serverSocket.accept();
serverSocket.close();
3.Socket应用案例
TCP功能实现
4.DatagramSocket和DatagramPacket 类
1.DatagramSocket介绍
此类表示用于发送和接收数据报数据包的套接字。
数据报套接字是分组传送服务的发送或接收点。 在数据报套接字上发送或接收的每个数据包都被单独寻址和路由。 从一个机器发送到另一个机器的多个分组可以不同地路由,并且可以以任何顺序到达。
示例: DatagramSocket s = new DatagramSocket(null); s.bind(new InetSocketAddress(8888));其中相当于: DatagramSocket s = new DatagramSocket(8888);这两种情况都将创建一个DatagramSocket,可以在UDP端口8888上接收广播。
2.DatagramPacket 介绍
该类表示数据报包。 数据报包用于实现无连接分组传送服务。 仅基于该数据包中包含的信息,每个消息从一台机器路由到另一台机器。 从一台机器发送到另一台机器的多个分组可能会有不同的路由,并且可能以任何顺序到达。 包传送不能保证
3.UDP的使用步骤
发送端:
DatagramSocket socket = null;
InetAddress Ip = null;
int port = 9999;
String msg = "你好";
DatagramPacket packet = null;
try {
socket = new DatagramSocket();
Ip = InetAddress.getByName("localhost");
packet = new DatagramPacket(msg.getBytes(),0,msg.getBytes().length,Ip,port);
socket.send(packet);
} catch (Exception e) {
e.printStackTrace();
}finally {
if (socket != null){
socket.close();
}
}
接收端:
DatagramSocket socket = null;
try {
socket = new DatagramSocket(9999);
byte[] buffer = new byte[1024];
DatagramPacket packet = new DatagramPacket(buffer,0,buffer.length);
socket.receive(packet);
byte[] target = packet.getData();
int len=0;
if (target.length!=0){
for (int i=0;i<target.length;i++){
if (target[i]=='\0'){
len=i;
break;
}
}
}
System.out.println("from:"+packet.getAddress());
System.out.println(new String(target,0,len));
} catch (Exception e) {
e.printStackTrace();
}finally {
if (socket!=null){
socket.close();
}
}
4.UDP实现在线聊天案例
UDP实现在线聊天案例
三,URL
内容比较简单直接上实例代码
package URL;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
public class URLTest {
public static void main(String[] args) {
HttpURLConnection connection = null;
InputStream in = null;
FileOutputStream fos = null;
try {
URL url = new URL("https://www.baidu.com/");
connection = (HttpURLConnection) url.openConnection();
in = connection.getInputStream();
fos = new FileOutputStream("1.html");
byte[] buffer = new byte[1024];
int len = 0;
while((len = in.read(buffer))!=-1){
fos.write(buffer,0,len);
}
String msg = connection.getResponseMessage();
System.out.println("连接状态:"+msg);
} catch (Exception e) {
e.printStackTrace();
}finally {
if (fos!=null){
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (in !=null){
try {
in.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (connection != null){
connection.disconnect();
}
}
}
}
|