好文推荐:排序、查找算法齐全(程序员必会 好文 值得收藏!)
1、网络编程_ip
IP:定位一个节点,如计算机、路由、通讯设备等
- InetAddress:多个静态方法
- 1、getLocalHost:本机
- 2、getByName:根据域名DNS|IP地址---->IP
两个成员方法:
- 1、getHostAddress:范湖地址
- 2、getHostName:返回计算机名
public class Test1 {
public static void main(String[] args) throws UnknownHostException {
//使用getLocalHost方法创建InetAddress对象
InetAddress addr=InetAddress.getLocalHost();
System.out.println(addr.getHostAddress());;
System.out.println(addr.getHostName()); //输出计算机名
//根据域名得到InetAddress对象
addr=InetAddress.getByName("www.baidu.com");
System.out.println(addr.getHostAddress()); //返回baidu服务器的ip
System.out.println(addr.getHostName()); //输出:www.baidu.com
//根据ip得到InetAddress对象
addr=InetAddress.getByName("183.232.231.172");
System.out.println(addr.getHostAddress());
System.out.println(addr.getHostName()); //输出ip而不是域名
}
}
2、网络编程_端口
端口:
- 1、区分软件
- 2、2个字节0-65535 UDP TCP
- 3、同一个协议端口不能冲突
- 4、定义端口越大越好
InetSocketAddress:
- 1、构造器:new InetSocketAddress(地址|域名,端口)
- 2、方法:getAddress()、getPort()
public class Test2 {
public static void main(String[] args) {
//包含端口
InetSocketAddress socketAddress=new InetSocketAddress("192.168.0.101",8080);
InetSocketAddress socketAddress2=new InetSocketAddress("localhost",9000);
System.out.println(socketAddress.getHostName());
System.out.println(socketAddress.getAddress());
System.out.println(socketAddress2.getAddress());
System.out.println(socketAddress2.getPort());
}
}
3、网络编程_URL_基本用法
URL:统一资源定位器,互联网三大基石之一(http、html):区分资源
- 1、协议
- 2、域名或计算机
- 3、端口:默认80
- 4、请求资源
public class Test3 {
public static void main(String[] args) throws MalformedURLException {
URL url=new URL("http://www.biadu.com:80/index.html?uname=shsxt&age=18#a");
//获取四个值
System.out.println("协议:"+url.getProtocol());
System.out.println("域名ip:"+url.getHost());
System.out.println("端口:"+url.getPort());
System.out.println("请求资源:"+url.getFile());
System.out.println("请求资源:"+url.getPath());
//参数
System.out.println("参数:"+url.getQuery());
//锚点
System.out.println("锚点:"+url.getRef());
}
}
4、网络编程_爬虫原理
/*
* 网络爬虫的原理
*
*/
public class Test4 {
public static void main(String[] args) throws Exception {
//获取URL
URL url=new URL("https://www.jd.com");
// URL url=new URL("https://wwww.dianping.com");
//下载资源
InputStream is=url.openStream();
BufferedReader br=new BufferedReader(new InputStreamReader(is,"UTF-8"));
String msg=null;
while(null!=(msg=br.readLine())) {
System.out.println(msg);
}
br.close();
//分析
//处理。。。
}
}
说明:代码有些问题,没得到正确的输出,还有异常。哪位大佬知道原因的请在评论区留言!
/*
* 网络爬虫原理+模拟浏览器
*/
public class Test5 {
public static void main(String[] args) throws Exception {
//获取URL
//URL url=new URL("https://www.jd.com");
URL url=new URL("https://wwww.dianping.com");
//下载资源
HttpURLConnection conn=(HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.setRequestProperty("User-Agent","Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36");
InputStream is=url.openStream();
BufferedReader br=new BufferedReader(new InputStreamReader(conn.getInputStream(),"UTF-8"));
String msg=null;
while(null!=(msg=br.readLine())) {
System.out.println(msg);
}
br.close();
//分析
//处理。。。
}
}
5、网络编程_UDP_基本步骤
UDP:基本步骤
发送端udpClient
- 1、使用DatagramSocket 指定端口 创建发送端
- 2、准备数据 一定转成字节数组
- 3、封装成DatagramPacket包裹 ,需要指定目的地
- 4、发送包裹send(DatagramPacket p)
- 5、释放资源
public class Test7UdpServe {
public static void main(String[] args) throws IOException {
System.out.println("发送发启动中");
//1、使用DatagramSocket 指定端口 创建发送端
DatagramSocket client=new DatagramSocket(8889);
//2、准备数据 一定转成字节数组
String data="学习Java";
byte[] datas=data.getBytes();
//3、封装成DatagramPacket包裹 ,需要指定目的地
DatagramPacket packet=new DatagramPacket(datas,0,datas.length,new InetSocketAddress("localhost",6666));
//4、发送包裹s
client.send(packet);
//5、释放资源
client.close();
}
}
UDP:基本步骤
接收端 UdpServe
- Address already in use: bind 同一个协议下端口不允许冲突
- 1、使用DatagramSocket 指定端口 创建接收端
- 2、准备容器 封装成DatagramPacket 包裹
- 3、阻塞式接收包裹 receive(DatagramPacket p)
- 4、分析数据
*byte[] getData() -
getLength()
- 5、释放资源
public class Test6 {
public static void main(String[] args) throws IOException {
System.out.println("接收方启动中");
//1、使用DatagramSocket 指定端口 创建接收端
DatagramSocket server=new DatagramSocket(6666);
//2、准备容器 封装成DatagramPacket 包裹
byte[] container=new byte[1024*60];
DatagramPacket packet=new DatagramPacket(container,0,container.length);
//3、阻塞式接收包裹 receive(DatagramPacket p)
server.receive(packet);
//4、分析数据
byte[] datas=packet.getData();
int len=packet.getLength();
System.out.println(new String(datas,0,len));
//5、释放资源
server.close();
}
}
注意:先启动发送方,后启动接收方。
6、网络编程_TCP_基本步骤
熟悉流程
创建服务器
- 1、指定端口 使用ServerSocket创建服务器
- 2、阻塞式等待链接 accept
- 3、操作:输入输出流
- 4、释放资源
public class Server {
public static void main(String[] args) throws Exception {
System.out.println("-----Server-----");
//1、指定端口 使用ServerSocket创建服务器
ServerSocket server=new ServerSocket(8989);
// 2、阻塞式等待链接 accept
Socket client =server.accept();
System.out.println("一个客户端建立了链接");
//3、操作:输入输出流
DataInputStream dis=new DataInputStream(client.getInputStream());
String data=dis.readUTF();
System.out.println(data);
//4、释放资源
dis.close();
client.close();
server.close();
}
}
熟悉流程
创建客户端
- 1、建立链接 :使用Socket创建客户端+服务的地址和端口
- 2、操作:输入输出流
- 3、释放资源
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
System.out.println("-------Client");
//1、建立链接 :使用Socket创建客户端+服务的地址和端口
Socket client=new Socket("localhost",8989);
//2、操作:输入输出流
DataOutputStream dos=new DataOutputStream(client.getOutputStream());
String data="hello";
dos.writeUTF(data);
dos.flush();
//3、释放资源
dos.close();
client.close();
}
}