InetAddress
InetAddress inetAddress = InetAddress.getByName("LAPTOP-EG17Q4P3");
String hostName = inetAddress.getHostName();
String address = inetAddress.getHostAddress();
System.out.println(hostName + ":" + address); // LAPTOP-EG17Q4P3:100.2.249.77(例子)
UDP传输数据
发送数据
InetAddress inetAddress = InetAddress.getByName("100.2.249.76");
// 创建发送端
DatagramSocket ds = new DatagramSocket();
// 创建数据包
byte[] bys = "a,2,我来了".getBytes();
DatagramPacket dp = new DatagramPacket(bys, bys.length, InetAddress.getByName("100.2.249.76"), 10086);
// 发送数据
ds.send(dp);
// 关闭发送端
ds.close();
接收数据
// 创建接受端
DatagramSocket ds = new DatagramSocket(10086);
// 创建数据接收包
byte[] bys = new byte[1024];
DatagramPacket dp = new DatagramPacket(bys, bys.length);
// 接收数据包
ds.receive(dp);
// 解析数据包
byte[] datas = dp.getData();
int len = dp.getLength();
String stringDatas = new String(datas, 0, len);
System.out.println("数据是:" + stringDatas);
//关闭接收端
ds.close();
TCP传输数据
发送数据
Socket s = new Socket("100.2.249.76", 10087);
OutputStream os = s.getOutputStream();
os.write("hello, 我来了".getBytes());
s.close();
接受数据
ServerSocket ss = new ServerSocket(10087);
// 监听
Socket s = ss.accept();
InputStream is = s.getInputStream();
byte[] bys = new byte[1024];
int len = is.read(bys);
String stringDatas = new String(bys, 0, len);
System.out.println("数据是:" + stringDatas);
s.close();
ss.close();
注:用shutdownOutput方法让服务器端知道客户端已经停止传输数据,相当于一个标记
lambda表达式
形式 () -> {}
new Thread( () -> {
System.out.println("dddd");
}).start();
要求:一个接口,接口中有且仅有一个方法
省略
addSum(x,y -> x + y);
addSum(s -> System.out.println("dddd"));
匿名内部类会单独的产生一个.class字节码文件