IP地址的概念介绍:
网络协议:
TCP与UDP协议的区别(传输层):
InterAddress:
package com.model.mehtod; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Arrays; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/23 20:18 * 演示 常用方法 InetAddress 类的使用 */ public class MethodDemo01 { public static void main(String[] args) throws UnknownHostException { // 1.获取本机的InetAddress对象 InetAddress localHost=InetAddress.getLocalHost();//获取本机的InetAddress对象 System.out.println(localHost);//DESKTOP-EU9P6DM/192.168.56.1 // 2.根据主机名,获取到InetAddress对象 InetAddress host1 = InetAddress.getByName("DESKTOP-EU9P6DM"); System.out.println(host1);//DESKTOP-EU9P6DM/192.168.56.1 // 根据ip地址获取到对应 InetAddress byAddress = InetAddress.getByAddress("192.168.56.1", new byte[4]); System.out.println(byAddress);//192.168.56.1/0.0.0.0 // 3.根据域名获取到InetAddress对象 InetAddress allByName = InetAddress.getByName("www.baidu.com"); System.out.println(allByName);//www.baidu.com/220.181.38.150 // 4.通过InetAddress对象获取到,对应的地址 String hostAddress = localHost.getHostAddress(); System.out.println(hostAddress);//192.168.56.1 // 5.通过InetAddress获取到主机名/或者是域名 String hostName = localHost.getHostName(); System.out.println(hostName);//DESKTOP-EU9P6DM } }
Socket:
TCP网络编程:
package com.model.socket; import java.io.IOException; import java.io.InputStream; import java.net.ServerSocket; import java.net.Socket; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/23 20:52 * 使用Socket(套接字)实现 TCP字节流编程实现 */ public class SocketDemo01 { // 服务端代码实现,监听9999端口号 public static void main(String[] args) throws IOException { // 1. 新建服务端的Socket,并监听9999端口号 // 细节:要求本机没有其他的服务在监听9999端口号 // 细节:这个serverSocket额可以通过accept()方法返回多个 Socket【多个客户端连接服务器的并发】 ServerSocket serverSocket = new ServerSocket(9999);//一个serverSocket可以产生多个socket System.out.println("服务端新建套接字,监听9999端口号,等待客户端连接"); // 2.进入到监听状态,当没有客户端连接时,程序会阻塞,等待连接 // 知道有客户端连接,会将socket对象返回,继续执行后面的程序 Socket socket = serverSocket.accept();//一次accept产生一个socket,供给一个客户端连接,可以产生多个socket共客户端连接 System.out.println("有客户端连接成功:"+socket.getClass()); // 3.通过socket获得字节输入流 InputStream inputStream = socket.getInputStream(); // 4.通过字节输入流,读取数据 byte[] bytes = new byte[1024]; int len=0; while((len=inputStream.read(bytes))!=-1){ System.out.println("客户端发送过来的消息:"+new String(bytes, 0, len)); } // 5.关闭流 inputStream.close(); socket.close(); serverSocket.close(); } }
package com.model.socket; import java.io.IOException; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; import java.net.UnknownHostException; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/23 21:06 * Socket套接字 * 实现TCP编程 */ public class SocketDemo02 { // 客户端的代码实现 public static void main(String[] args) throws IOException { // 1.获得连接,的到socket对象 Socket socket = new Socket(InetAddress.getLocalHost(), 9999); System.out.println("客户端连接成功,获得socket对象:"+socket.getClass()); // 2.连接成功后,通过socket,的到字节输出流,向服务端发送数据 OutputStream outputStream = socket.getOutputStream(); // 3.通过字节输出流对象,想Socket通道中写入数据 outputStream.write("hello,zzh".getBytes()); System.out.println("客户端退出~"); // 4.关闭流和socket outputStream.close(); socket.close(); } }
TCP网络编程2
package com.model.socket; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/23 20:52 * 使用Socket(套接字)实现 TCP字节流编程实现2 */ public class SocketDemo03 { // 服务端代码实现,监听9999端口号 public static void main(String[] args) throws IOException { // 1. 新建服务端的Socket,并监听9999端口号 // 细节:要求本机没有其他的服务在监听9999端口号 // 细节:这个serverSocket额可以通过accept()方法返回多个 Socket【多个客户端连接服务器的并发】 ServerSocket serverSocket = new ServerSocket(9999);//一个serverSocket可以产生多个socket System.out.println("服务端新建套接字,监听9999端口号,等待客户端连接"); // 2.进入到监听状态,当没有客户端连接时,程序会阻塞,等待连接 // 知道有客户端连接,会将socket对象返回,继续执行后面的程序 Socket socket = serverSocket.accept();//一次accept产生一个socket,供给一个客户端连接,可以产生多个socket共客户端连接 System.out.println("有客户端连接成功:"+socket.getClass()); // 3.通过socket获得字节输入流 InputStream inputStream = socket.getInputStream(); // 4.通过字节输入流,读取数据 byte[] bytes = new byte[1024]; int len=0; while((len=inputStream.read(bytes))!=-1){ System.out.println("客户端发送过来的消息:"+new String(bytes, 0, len)); } // 4.1 回去客户端一个消息 System.out.println("回复了一个消息"); OutputStream outputStream = socket.getOutputStream(); outputStream.write("hello,client".getBytes()); // 设置输出结束标志 socket.shutdownOutput(); // 5.关闭流 outputStream.close(); inputStream.close(); socket.close(); serverSocket.close(); } }
package com.model.socket; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; /** * @Description:测试类 * @Author: 张紫韩 * @Crete 2021/7/23 21:06 * Socket套接字 * 实现TCP编程2 */ public class SocketDemo04 { // 客户端的代码实现 public static void main(String[] args) throws IOException { // 1.获得连接,的到socket对象 Socket socket = new Socket(InetAddress.getLocalHost(), 9999); System.out.println("客户端连接成功,获得socket对象:"+socket.getClass()); // 2.连接成功后,通过socket,的到字节输出流,向服务端发送数据 OutputStream outputStream = socket.getOutputStream(); // 3.通过字节输出流对象,想Socket通道中写入数据 outputStream.write("hello,zzh".getBytes()); // 设置输出结束标志 socket.shutdownOutput(); // 3.1读取到服务端回复的消息 InputStream inputStream = socket.getInputStream(); byte[] buff=new byte[1024]; int readLen=0; while ((readLen=inputStream.read(buff))!=-1){ System.out.println("读取服务端回父的消息"+new String(buff,0,readLen)); } System.out.println("客户端退出~"); // 4.关闭流和socket outputStream.close(); socket.close(); } }
TCP网络编程3:
原文:https://www.cnblogs.com/zzhAylm/p/15045734.html