InetAddress
作用:封装计算机的IP地址和DNS(没有端口信息)。
注:DNS是Domain Name System,域名系统。
特点:这个类没有构造方法。如果要得到对象,只能通过静态方法:getLocalHost()、getByName()、 getAllByName()、 getAddress()、getHostName()。
URL类
UDP基础写法
发送方:
// 1.使用DatagramSocket指定端口 创建接收端
DatagramSocket client=newDatagramSocket(8888);
//2.准备数据 一定转成字节数组
String data="北京上学唐";
byte[] datas=data.getBytes();
//3.封装成DatagramSocket包裹需要指定目的地
DatagramPacket packet=newDatagramPacket(datas,0,datas.length,
newInetSocketAddress("localhost",9999));
//4.发送包裹send(DatagramPacket p)
client.send(packet);
//5.释放资源
client.close();
接收方
//1.使用DatagramSocket指定端口 创建接收端
DatagramSocket client=newDatagramSocket(9999);
//2.准备容器 封装成DatagramSocket包裹
byte[] container=new byte[1024*60];
DatagramPacket packet=newDatagramPacket(container,0,container.length);
//3.阻塞式接收包裹receive(DatagramPacket p)
client.receive(packet);
//4.分析数据
// byte[]getData()
// getLength()
byte[] data=packet.getData();
System.out.println(new String(data));
//5.释放资源
client.close();
TCP基本写法
解决了服务器只能接收第一次消息的问题,把accept()放到循环外面就行了
服务器端
//1.指定端口,使用ServerSocket创建服务器
ServerSocket server=newServerSocket(8888);
//2.阻塞式等待连接accept
Socket client=server.accept();
System.out.println("一个客户端建立了连接");
//3.操作:输入输出流操作
DataInputStream dis=newDataInputStream(client.getInputStream());
String data=dis.readUTF();
System.out.println(data);
//4.释放资源
dis.close();
client.close();
客户端
//1.建立连接,使用Socket创建客户端+服务的地址与端口
Socket client=newSocket("localhost",8888);
//2.操作;输入输出流操作
DataOutputStream dos=newDataOutputStream(client.getOutputStream());
String data="hello";
dos.writeUTF(data);
//3.释放资源
dos.close();
client.close();