IP,UDP协议
IP:
-------
import java.net.InetAddress;
import java.net.UnknownHostException;
public class MyInetAddressDemo1 {
public static void main(String[] args) throws UnknownHostException {
/*
static inetaddress getByName(String host) 确定主机名称的IP地址。主机名称可以是机器名称,也可以是IP地址
String getHostName() 获取此IP地址的主机名。
string getHostAddress() 返回文本显示中的IP地址字符串。
*/
InetAddress address=InetAddress.getByName("LAPTOP-BA8TSI01");
System.out.println(address);
String name = address.getHostName();
System.out.println(name);
String ip = address.getHostAddress();
System.out.println(ip);
}
}
---------------------------------------------------------
package a02;
import java.io.IOException;
import java.net.*;
public class SendMessageDemo1 {
public static void main(String[] args) throws IOException {
//发送数据
//创建datagramsocket对象(快递公司)
/*
细节:绑定端口号,以后就从这个端口号发送数据
空参:随机一个端口
有参:指定端口号
*/
DatagramSocket ds=new DatagramSocket();
//打包数据
String s="hahahaha";
byte[] bytes=s.getBytes();
InetAddress address=InetAddress.getByName("LAPTOP-BA8TSI01");
int port=10086;
DatagramPacket dp=new DatagramPacket(bytes,bytes.length,address,port);
//发送数据
ds.send(dp);
//关闭资源
ds.close();
}
}
-------------
package a02;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class ReceiveMessageDemo1 {
public static void main(String[] args) throws IOException {
//接受数据
//1.创建datagramSocket对象(快递公司)
//细节:
/*
接受数据的端口号必须与发送数据的端口号一致
*/
DatagramSocket ds=new DatagramSocket(10086);
//2.接收数据包
byte[] bytes=new byte[1024];
DatagramPacket dp=new DatagramPacket(bytes,bytes.length);
ds.receive(dp);
//3.解析数据包
byte[] data=dp.getData();
int length=dp.getLength();
InetAddress address=dp.getAddress();
int port=dp.getPort();
System.out.println("接收到数据"+new String(data,0,length));
System.out.println("该数据是从"+address+"的"+port+"端口号发送过来的");
//4.关闭资源
ds.close();
}
}
--------------------------------------------------------
package a03;
import java.io.IOException;
import java.net.*;
import java.util.Scanner;
public class SendMessageDemo {
public static void main(String[] args) throws IOException {
//
/*
练习:
udp发送消息:来自键盘录入的数据,直到886为止
udp接收消息:由于不知道什么时候停止,所以采用死循环接收
*/
//1.创建datagramsocket对象(快递公司)
DatagramSocket ds=new DatagramSocket();
//2.打包数据
Scanner sc=new Scanner(System.in);
while (true) {
System.out.println("请输入你要发送的数据:");
String str=sc.nextLine();
if (str.endsWith("886")) {
break;
}
byte[] bytes=str.getBytes();
InetAddress address=InetAddress.getByName("LAPTOP-BA8TSI01");
int port=10086;
DatagramPacket dp=new DatagramPacket(bytes,bytes.length, address,port);
//3.发送数据
ds.send(dp);
}
//4.关闭资源
ds.close();
}
}
---------------
package a03;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
public class ReceiveMessageDemo {
public static void main(String[] args) throws IOException {
//接收数据
//1.创建datagramsocket对象(快递公司)
DatagramSocket ds=new DatagramSocket(10086);
//2.创建数据包对象(用于接收数据)
byte[] bytes=new byte[1024];
DatagramPacket dp=new DatagramPacket(bytes,bytes.length);
while (true) {
ds.receive(dp);
//3.解析数据包,取出数据
byte[] data=dp.getData();
int length=dp.getLength();
InetAddress address=dp.getAddress();
int port=dp.getPort();
System.out.println("接收到数据:"+new String(data,0,length));
System.out.println("该数据是从"+address+"的"+port+"端口号发送过来的");
}
}
}
------------------------------------------------------------------
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Hexo!