java网络编程常用方法
UDP
Inetaddress常用方法
方法声明 | 功能描述 |
InetAddress getByName(String host) | 获取指定主机的IP地址 |
InetAddress getLocalHost() | 获取本地主机地址 |
String getHostName() | 获取本地主机的主机名 |
boolean isReachable(int timeout) | 判断在限定时间内指定的IP地址是否可以访问 |
String getHostAddress() | 获取字符串格式的原始IP地址 |
public static void main(String[] args) throws Exception {
//获取本机InetAddress对象
InetAddress address = InetAddress.getLocalHost();
//获取本地主机IP
System.out.println(address);
//获取panther9985.icu的主机对象
InetAddress address1 = InetAddress.getByName("www.panther9985.icu");
System.out.println(address1);
//获取原始IP
System.out.println(address.getHostAddress());
//获取本地主机名
System.out.println(address.getHostName());
//判断0.5秒内是否可访问
System.out.println(address.isReachable(500));
}
DatagramSocket常用方法
方法声明 | 功能描述 |
void receive(DatagramPacket p) | 用于接受DatagramPacket数据报,在接受之前一直处于阻塞状态,如果发送信息比数据报长,数据将被截取 |
void send(DatagramPacket p) | 用于发送DatagramPacket数据报,数据报中需包含数据、数据长度、ip地址、端口号 |
void close() |
关闭当前Socket,释放资源 |
//定义一个指定端口的发送端
DatagramSocket client = new DatagramSocket(3000);
//定义要发送的数据
String str= "hello world!";
//将数据封装成数据报,发送到指定地址
InetAddress addr = InetAddress.getByName("localhost");
DatagramPacket packet = new DatagramPacket(str.getBytes(),str.length(),addr,9985);
//发送数据
System.out.println("开始发送数据");
client.send(packet);
client.close();
//定义一个指定端口的接收端对象
DatagramSocket server = new DatagramSocket(9985);
//定义一个字节数组接收数据
byte[] bys = new byte[1024];
//定义一个数据报对象,封装接受的数据
DatagramPacket packet = new DatagramPacket(bys,bys.length);
//等待接受数据,在没接收到数据之前处于阻塞状态
server.receive(packet);
//调用String的构造方法将数据报转换成字符串数据
String str = new String(packet.getData(),0,packet.getLength());
System.out.println("从"+packet.getAddress()+"发送的信息为"+str);
DatagramPacket常用方法
方法声明 | 功能描述 |
InetAddress getAddress() | 获取接受端或发送端的IP地址 |
int getPort() | 获取接受端或发送端的端口号 |
byte[] getData() | 获取接受端或者发送端的数据,一般用于接受端 |
int getLength() | 获取接收端或发送端数据的长度 |
String str2= "hello world!";
// System.out.println(str.getBytes().length);
// System.out.println(str.length());
//将数据封装成数据报,发送到指定地址
InetAddress addr2 = InetAddress.getByName("localhost");
DatagramPacket packet2 = new DatagramPacket(str2.getBytes(),str2.length(),addr,9985);
System.out.println(packet2.getAddress());//localhost/127.0.0.1
System.out.println(packet2.getPort()); //9985
System.out.println(packet2.getData()); //[B@b1bc7ed
System.out.println(packet2.getLength());//12
TCP
ServerSocket的常用方法
方法声明 | 功能描述 |
Socket accept() | 用于等待客户端的连接,在客户端连接之前处于阻塞状态,如果有客户端连接会返回一个Socket对象 |
Inetaddress getInetAddress() | 返回一个Inetaddress对象,该对象封装了ServerSocket绑定的IP地址 |
boolean isClosed() | 判断ServerSocket是否关闭 |
void bind(SocketAddress endpoint) | 用于将ServerSocket对象绑定到指定的IP地址和端口号 |
//创建ServerSocket对象
ServerSocket server = new ServerSocket();
//接收数据
server.accept();
//获取地址
InetAddress address = server.getInetAddress();
System.out.println(address);
//判断是否关闭
System.out.println(server.isClosed());
Socket常用方法
方法声明 | 功能描述 |
int getPort() | 返回Socket连接远程服务端的端口号 |
InetAddress getLocalAddress() | 该方法获取Socket对象绑定的IP地址 |
void close() |
关闭Socket连接,结束本次通信 |
InputStream getInputStream() | 返回一个InputStream类型的输入流对象,如果对象是ServerSocket返回,读取Socket的数据,反之对象是Socket返回,读取ServerSocket的数据 |
OutputStream getOutputStream() | 返回一个OutputStream类型的输入流对象,如果对象是ServerSocket返回,向Socket发送数据,反之对象是Socket返回,向ServerSocket发送数据 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构