1、InetAddress类的使用:
(1)InetAddress类还有两个子类,即Inet4Address 和Inet6Address,它们分别是IPv4地址和IPv6地址。
(2)两个静态方法来获取InetAddress实例:
getByName(String host):根据主机获取对应的InetAddress对象。
getByAddress(byte[] addr):根据原始IP地址来获取对应的InetAddress对象。
(3)三个方法来获取InetAddress实例对应的IP地址和主机名:
String getCanonicalHostName():获取此IP地址的完全限定域名。
String getHostAddress():返回该InetAddress实例对应的IP地址(字符串形式)。
String getHostName():获取此IP地址的主机名。2、URL(Uniform Resource Locator)类代表统一资源定位器,统一资源定位器是指互联网“资源”的名字。
(1)URL的组成:协议名、主机、端口、资源。
(2)URL的格式为“Protocol://host:port/resourceName”
(3)用于创建URL对象的常见的两个方法:
public URL(String str)和public URL(URL context,String str);
(4)方法:
String getFile():获取此URL的资源名。
String getHost():获取此URL的主机名。
String getPath():获取此URL的路径部分。
int getPort():获取此URL的端口号。
String getProtocol():获取此URL的协议名称。
String getQuery():获取此URL 的查字符串部分。
URLConnection openConnection():返回一个URLConnection对象,他代表到URL所引用的远程对象的连接。
InputStream openStream():打开于此URL的连接,并返回一个用于读取该URL资源的InputStream
3、通过URL来下载网页信息
import java.net.*;
import java.io.*;
public class TestNet3{
public static void main(String args[]){
URL url = new URL("http://www.sina.com/");
InputStreamReader isr = new InputStreamReader(url.openStream());
BufferedReader in = new BufferedReader(isr);
String inputLine;
FileOutputStream fos = new FileOutputStream("d://mydownloadhtml.html");
while((inputLine=in.readLine())!=null){
fos.write(inputLine.getBytes());//写入文件
//System.out.println(inputLine);//显示到控制台
}in.close();
}
}
4、URLDecoder(解码)类和URLEncoder(编码)类用于完成普通字符串和application/x-www-from-
urlencoded MIME字符之间的相互转换。
5、代码演示"乱码”转换成普通字符串。
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;public class TestNet4 {
public static void main(String[] args) {
try {
String str1 = URLDecoder.decode("Java%e5%BC%80%E5%8F%91", "UTF-8");
System.out.println(str1);
String str2 = URLEncoder.encode("Java程序开发", "UTF-8");
System.out.println(str2);
} catch (UnsupportedEncodingException e) {
System.out.println(e.getMessage());
}
}
基于Socket的网络编程
1、发送端代码:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class TestNet5 {//发送端代码
public static void main(String[] args) {
try {
DatagramSocket ds = new DatagramSocket();
String str = "hello,world!!";//要发送的内容,
DatagramPacket dp = new
DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("192.168.13.32"),5000);
ds.send(dp);System.out.println("发送完毕!");
ds.close();} catch (Exception e) {
e.printStackTrace();
}//创建socket对象}
}
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class TestNet6 {//接收端
public static void main(String[] args) {
try {DatagramSocket ds = new DatagramSocket(5000);
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf,1024);
ds.receive(dp);String str = new String(dp.getData(),0,dp.getLength());
String add = dp.getAddress().getHostAddress();
int port = dp.getPort();System.out.println(str+"from"+add+":"+port);
System.out.println("获取完毕!");
} catch (Exception e) {e.printStackTrace();
}}
}
URL url = new URL()