网络参考模型
网络要素-IP地址
import java.io.IOException;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class IPDemo {
/**
* @param args
* @throws UnknownHostException
* @throws IOException
*/
public static void main(String[] args) throws UnknownHostException, IOException {
/*
* ip地址对象。InetAddress
*/
//获取本地主机地址对象。
// InetAddress ip = InetAddress.getLocalHost();
//获取其他主机的地址对象。
InetAddress ip = InetAddress.getByName("www.sina.com.cn");
System.out.println(ip.getHostAddress()+":"+ip.getHostName());
}
}
网络要素-域名解析
TCP和UDP
UDP 应用
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
public class UDPSend {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
System.out.println("udp 发送端 run");
/*
* 通过查阅文档,了解到用于UDP传输协议的对象是DatagramSocket。
*
* 通过udp的协议发送一段文本数据。
* 思路:
* 1,需要先建立udp的socket。它具备者发送或者接收功能。
* 2,将数据封装到数据包中。数据包对象是DatagramPacket。
* 3,使用socket对象的send方法将数据包发送出去。
* 4,关闭资源。
*/
// 1,需要先建立udp的socket。它具备者发送或者接收功能。
DatagramSocket ds = new DatagramSocket(8888);
// 2,将数据封装到数据包中。数据包对象是DatagramPacket。
String text = "hello udp来了。";
byte[] buf = text.getBytes();//将数据转成字节数组。
// 将字节数组封装到数据包中。
DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName("10.13.42.74"), 10000);
// 3,使用socket对象的send方法将数据包发送出去。
ds.send(dp);
// 4,关闭资源。
ds.close();
}
}
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
public class UDPRece {
/**
* @param args
* @throws IOException
*/
public static void main(String[] args) throws IOException {
System.out.println("udp 接收端 run");
/*
* 定义一个udp的接收端。接收发送过来的数据。并显示在屏幕上。
* 思路:
* 1,先有udp socket服务。而且记住:接收端一定要明确端口。否则收不到数据。
* 2,接收数据。之前先将数据存储到数据包中。
* 3,先定义数据包。
* 4,通过数据包对象获取数据包的内容,发送端的ip。发送端的端口,发送过来的数据。
* 5,关闭资源。
*
*/
// 1,先有udpsocket服务。
DatagramSocket ds = new DatagramSocket(10000);
// 2,接收数据。之前先将数据存储到数据包中。
// 3,先定义数据包。
byte[] buf = new byte[1024];
DatagramPacket dp = new DatagramPacket(buf, buf.length);
ds.receive(dp);//阻塞
// 4,通过数据包对象获取数据包的内容,发送端的ip。发送端的端口,发送过来的数据。
String ip = dp.getAddress().getHostAddress();
int port = dp.getPort();
String text = new String(dp.getData(),0,dp.getLength());
System.out.println(ip+":"+port+":"+text);
// 5,关闭资源。
ds.close();
}
}