最后更新:2022-01-23 13:11:02 手机定位技术交流文章
概述:方便我们对IP地址的获取操作,Java提供了一个类InetAddress供我们使用
所在包:java.net
public class InetAddress
extends Object
implements Serializable
注:InetAddress没有构造函数,需要调用getByName();方法来获得一个InetAddress对象
常用方法:
| 方法名 | 作用 |
|---|---|
| static InetAddress getByName(String host) | 确定主机名称的IP地址。主机名称可以是机器名称,也可以是IP地址 |
| String getHostName() | 获取此IP地址的主机名 |
| String getHostAddress() | 返回文本显示中IP地址字符串 |
代码示例:
public static void main(String[] args) throws UnknownHostException{
InetAddresss= InetAddress.getByName("100.64.141.193");
//确定主机名称的IP地址。主机名称也可以是机器名称,也可以是IP地址,推荐写IP地址
Stringname= s.getHostName(); //获得此IP地址的机器名称
StringIP= s.getHostAddress(); //返回文本显示中的IP地址字符串
System.out.println(name);
System.out.println(IP);
}
概述:设备上应用程序的唯一标识
端口号:
概述:计算机网络中,连接和通信的规划被称为网络通信协议
UDP发送数据的步骤
UDP接收数据的步骤
接收数据的步骤
代码示例:
public class SendDemo{
public static void main(String[] args) throws IOException{
DatagramSocketds= new DatagramSocket();
byte[]by= "asdijhgabsjkhvba".getBytes();
DatagramPacketdp= new DatagramPacket(by,by.length,InetAddress.getLocalHost(),10086);
//DatagramPacket(byte[] by,int length,InetAddress,int post);
ds.send(dp);
ds.close();
}
}
public class ReceiveDemo{
public static void main(String[] args) throws IOException{
//DatagramSocket(intport):构造数据报套接字并将其绑定到本地主机上的指定端口
DatagramSocketds= new DatagramSocket(10086);
//创建一个数据包接收数据
//DatagramPacket(byte[]by,intlength):构造一个DatagramPacket用于接收长度为length数据包
byte[]by= new byte[1024];
DatagramPacketdp= new DatagramPacket(by,by.length);
ds.receive(dp);
//解析数据包,并把数据在控制台显示
byte[]datas= dp.getData();
Stringdata= new String(datas);
//调用内部类构造方法String(byte[]by,intoff,intlength)
System.out.println(new String(dp.getData(),0,dp.getLength()));
ds.close();
}
}
UDP发送数据:数据来自于键盘录入,直到输入的数据是886,发送数据结束。
(用字符缓冲流来做,不要用Scanner)
UDP接收数据:因为接收端不知道发送端什么时候停止发送,故采用死循环接收
代码示例:
public class SendDemo{
public static void main(String[] args) throws IOException{
BufferedReaderbr= new BufferedReader(new InputStreamReader(System.in));
DatagramSocketds= new DatagramSocket();
Strings= null;
while( (s = br.readLine() ) != null){
if("886".equals(s)){
break;
}
byte[]by= new byte[1024];
by=s.getBytes();
DatagramPacketdp= new DatagramPacket(by,by.length,InetAddress.getLocalHost(),10086);
//发送端设置InetAddress(相当于IP)和端口号port
ds.send(dp);
}
br.colse();
ds.close();
}
}
public class ReceiveDemo{
public static void main(String[] args) throws IOException{
//DatagramSocket(intport):构造数据报套接字并将其绑定到本地主机上的指定端口
DatagramSocketds= new DatagramSocket(10086);
byte[]by= new byte[1024];
//创建一个数据包接收数据
//DatagramPacket(byte[]by,intlength):构造一个DatagramPacket用于接收长度为length数据包
DatagramPacketdp= new DatagramPacket(by,by.length);
while(true){
ds.receive(dp);
byte[]datas= dp.getData();
//解析数据包
//String data = new String(datas);
//调用内部类构造方法String(byte[]by,int off,int length)
System.out.println("数据是:"+new String(dp.getData(),0,dp.getLength()));
}
//ds.close();
}
}
本文由 在线网速测试 整理编辑,转载请注明出处。