网络编程InetAddress类的使用

网络编程概述、网络编程三要素、InetAddress类及端口和协议介绍 网络编程概述、网络编程三要素、InetAddress类及端口和协议介绍的简单示例 阅读详情

网络编程的基本知识

网络通讯要素
. IP地址

. 网络中设备的标识
. 不易记忆,可用主机名
. 本地回环地址:127.0.0.1 主机名:localhost

. 端口号

. 用于标识进程的逻辑地址,不同进程的标识
. 有效端口:0~65535,其中0~1024系统使用或保留端口。


. 传输协议

. 通讯的规则
. 常见协议:TCP,UDP

UDP
. 将数据及源和目的封装成数据包中,不需要建立连接
. 每个数据报的大小在限制在64k内
. 因无连接,是不可靠协议
. 不需要建立连接,速度快

TCP
. 建立连接,形成传输数据的通道。
. 在连接中进行大数据量传输
. 通过三次握手完成连接,是可靠协议
. 必须建立连接,效率会稍低


Socket流机制

Socket就是为网络服务提供的一种机制。
通信的两端都有Socket。
网络通信其实就是Socket间的通信。
数据在两个Socket间通过IO传输。

InetAddress类
InetAddress的构造函数不是公开的(public),所以需要通过它提供的静态方法来获取,有以下的方法:

static InetAddress[] getAllByName(String host)
:是根据主机名返回其可能的所有InetAddress对象,保存在一个数组中

static InetAddress getByName(String host)
:在给定主机名的情况下确定主机的 IP 地址

static InetAddress getLocalHost()
:返回本地主机。

String getHostAddress() 
:返回IP地址字符串(以文本表现形式).

String getHostName()
:获取此ip地址的主机名.

注意到这些方法可能会抛出的异常。如果安全管理器不允许访问DNS服务器或禁止网络连接,SecurityException会抛出,如果找不到对应主机的IP地址,或者发生其他网络I/O错误,这些方法会抛出UnknowHostException。

代码如下:
package network;

import java.net.InetAddress;
import java.net.UnknownHostException;


public class NetWork {
public  static void main(String [] args) throws UnknownHostException{
//获取本地主机ip,和主机名
// InetAddress myID = InetAddress .getLocalHost();
// String a = myID.getHostAddress();
// String b = myID.getHostName();
// System. out.println(a);
// System. out.println(b);
//获取网络中的主机域名和 ip地址 
InetAddress netWorkID = InetAddress.getByName("www.baidu.com");//
System. out.println(netWorkID.getHostName());
System. out.println(netWorkID.getHostAddress());
System. out.println("--------");
System. out.println(netWorkID);
InetAddress[] addresses=InetAddress.getAllByName("www.baidu.com");
for(InetAddress addr:addresses){
System.out.println(addr);
}
}

} 

以上知识,都是自己百度总结的,有什么不对的地方,希望大家可以指出.

34、使用InetAddress类进行网络编程 本文详细介绍了Java中InetAddress类在网络编程中的使用,涵盖基本方法、IPv4与IPv6地址处理、反向DNS查找、主机名与IP解析关系、最佳实践以及高级应用场景。同时,还讨论了InetAddress在多线程环境中的使用技巧和性能优化策略,帮助开发者构建更高效可靠的网络应用。 阅读详情

相关推荐

22、探索InetAddress类:Java网络编程的核心

本文详细介绍了Java中用于处理IP地址和进行网络操作的InetAddress类。内容涵盖获取主机名和IP地址、区分IPv4与IPv6地址、主机可达性检测、本地主机信息查询以及实际应用案例,帮助开发者全面掌握InetAddress在网络编程中的使用。

convnet3designer的博客 148

localhost和127.0.0.1的区别

localhost和127.0.0.1的区别 bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family = AF_INET; //inet_pton(AF_INET,ip,&servaddr.sin_addr); servaddr.sin_addr.s_addr = htonl(INADDR_ANY);...

$firecat利白的代码足迹$ 3286

105. replace( )函数

【目录】

weixin_63986098的博客 1万+

sprinboot获取http请求的ip(nginx代理)

nginx配置 location / { proxy_redirect off; proxy_pass http://127.0.0.1:10020/; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header

Jatham_C的博客 827

WinForm布局

登录模板页面UILoginForm

m0_71541781的博客 470

windows sever2019切换Linux内核

安装docker engine后,内核是windows,很多镜像都无法安装使用。 一,在https://github.com/linuxkit/lcow/release 下载最新版本release.zip,我使用了如下版本。 二,新建文件夹C:\Program Files\Linux Containers ,把release.zip(不要解压)放入此文件夹 三,编辑docker配置文件( C:\ProgramData\docker\config\daemon.json) ,电脑中没有该文件,新建一

记录日常疑问 3875

inet addr(网络地址)、bcast(广播地址)、mask(子网掩码)

int addr:网络地址。IP地址和子网掩码进行相与运算,将运算结果中的网络地址不变,主机地址变为0,即主机号全0是网络地址。示例: 如果是192的C段地址,那么网络地址就是:192.168.1.0,地址掩码是:255.255.255.0;如果地址掩码是:255.255.0.0,那么网络地址就是:192.168.0.0;网络地址很大一部分是由地址掩码决定的。 相与运算规则:两者全为1得1,二者不全为1得0。具体来说,1与1得1, 1与0、0与1、0与0都得0。 简单判断:...

weixin_38278993的博客 1万+

可信数据空间:可信空间、区域功能节点、业务功能节点、连接器的关联关系

可信数据空间通过分层架构实现安全数据共享:可信空间作为顶层制定全局规则;区域功能节点协调辖区内功能节点协作;功能节点提供具体数据服务;连接器作为唯一通信通道确保安全交互。系统采用"规则自上而下约束,数据自下而上流动"机制,通过分层治理和标准化连接,在保证数据主权的同时实现跨域协作,具有策略分级执行、去中心化治理等特性,支持灵活扩展业务场景。

友莘居士的博客 1685

Linux系统解决InetAddress.getLocalHost.getHostAdress()获取到的地址是127.0.0.1

Linux系统解决InetAddress.getLocalHost.getHostAdress()获取到的地址是127.0.0.1

weixin_39718135的博客 1671

shader多图叠加变换

shader Shader "Paint3D/AddTexture" { Properties { _MainTex ("Main Texture", 2D) = "white" {} _MainColor("Main Color", Color)=(1,1,1,1) _AddTex0 ("Texture0", 2D) = "white" {} _AddTex1 ("Texture1", 2D) = "white" {} .

李长江的博客 908

AutoSAR配置视频讲解:新建DaVinci工程

AutoSAR实验视频讲解:闪烁一颗LED实验【新建DaVinci工程】 上一篇 | 下一篇 | 总目录 实验架构图 视频本频放在了文末,下图描述了本次实验配置内容在AutoSAR架构中的位置,供大家参考 实验内容 本节课程讲解新建DaVinci工程,听上去新建工程很简单,但是还是需要很多的准备工作和细节。主要内容是新建工程和导入dbc文件和导入arxml文件的方法 主要步骤 新建DaVinci工程 导入.dbc通信矩阵文件 导入Mcal的arxml文件 实验视频2:Mcal配置 提示:版权所在,违

雪云飞星的博客 6275

IP地址转换函数--inet_addr和inet_ntoa使用笔记

【inet_addr.c测试代码】 #include #include #include #include #include int main(int aargc, char* argv[]) {          struct in_addr addr1,addr2;          ulong   l1,l2;          l1= inet_addr("192.168.

wangzhong1979的专栏 3784

29、网络支持技术:CDN、覆盖网络与无标度网络解析

本文详细解析了CDN路由方式与性能指标,探讨了覆盖网络与无标度网络的特性及其在云计算和现代网络中的应用。文章分析了CDN的关键技术与挑战,介绍了覆盖网络与小世界网络的基本原理,并深入讨论了无标度网络的构建算法、性能优化策略以及在多个领域的应用案例。最后,文章展望了未来网络技术发展趋势与无标度网络的结合潜力。

night的博客 88

网络编程之Socket类和InetAddress类

Java中的网络支持 针对网络通信的不同层次,Java提供了不同的API,其提供的网络功能有四大类: InetAddress:用于标识网络上的硬件资源,主要是IP地址 URL:统一资源定位符,通过URL可以直接读取或写入网络上的数据 Sockets:使用TCP协议实现的网络通信Socket相关的类 Datagram:使用UDP协议,将数据保存在用户数据报中,通过网络进行通信。

a3060858469的博客 1195

基于 FastAPI + LangGraph + LLM 大语言模型的通用 Agent 多智能体系统架构设计与开发实战、产业应用

FastAPI是一个现代、快速(高性能)的Python Web框架,专门用于构建API。它由Sebastián Ramírez(@tiangolo)创建,基于Starlette(用于Web部分)和Pydantic(用于数据部分)构建。性能优先:FastAPI是当前最快的Python Web框架之一,性能与NodeJS和Go相当。这得益于其基于Starlette的异步架构,能够充分利用Python 3.6+的async/await特性。开发效率。

AI天才研究院 230

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java-网络编程InetAddress类的使用

java 网络编程中,可以使用InetAddress来获取目标网站的地址和本地的ip InetAddress类用于表示IP地址,比如在进行Socket编程时,就会用到该类。 InetAddress没有公共构造方法,我们只能使用它提供的静态方法来构建一个InetAddress类实例 #getLocalHost() : 返回本机主机地址 #getAllByName(String host) : 从指...

BLOG OF PETERMAOSX. 556

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

Java网络编程之IP地址和InetAddress类

Java语言的优势之一是Java程序能访问网络资源。Java提供一系列的类支持Java程序访问网络资源。 TCP/IP协议和IP地址 为了进行网络通信,通信双方必须遵守通信协议.目前最广泛使用的是TCP/IP协议,它是Internet中各方所遵循的公共协议.TCP(Transport Control Protocol)是一种传输控制协议,IP(Internet Protocol)是一种网际协议...

Java入门基础教程 875

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Java网络编程(二)—— InetAddress类和NetworkInterface类

Java网络编程(二)—— InetAddress类和NetworkInterface类 Java网络编程(二)—— InetAddress类和NetworkInterface类InetAddress类使用方法可达性NetworkInterface类使用方法获取方法 InetAddress类 java.net.InetAddress类是Java对IP地址的高层表示。一般来说,它包括一个主机名和一个IP地址。 使用方法 InetAddress类没有公共构造函数,但是他有一些静态工厂方法来构造InetAddr

lizefeng1998的博客 915

java中网络编程的InetAddress类

java中网络编程的InetAddress类 了解了IP地址的作用,我们看学习下JDK中提供了一个InetAdderss类,该类用于封装一个IP地址,并提供了一系列与IP地址相关的方法,下表中列出了InetAddress类的一些常用方法。 java中网络编程的InetAddress类常用方法 package com.mytest.test0

反正我不管,就爱陈旭员 656

快速上手Java网络编程(一)基础介绍、URL类和InetAddress类

快速上手Java网络编程(一)基础介绍、URL类和InetAddress类 最近在学Java网络编程,里面涉及到的一些概念比较容易搞混,于是决定写博客记录整理一下,方便日后复习,如有发现错误之处,还请在评论区指正。 一、 前置知识 (1)Java基本语法 (2)需要对Java输入输出流有基本的认识(其实不懂也能看得懂) (3)了解Java的多线程机制 (4)对计算机网络(计算机之间的通信)有基本的认识(最起码知道啥是IP地址,用来干啥的) 二、URL类和InetAddress类 1、URL类 URL想必大

tomatoarmys的博客 394

java网络编程四:InetAddress类、URL类、URLConnection类解析及用法示例

1、InetAddress类实现简单IP扫描获得主机名 [java] view plaincopy "font-size:16px;">package demo.net;      import java.net.InetAddress;   import java.net.UnknownHostException;      /*   * 

ccecwg的专栏 491

java深化——网络编程之InetAddress类,InetSocketAddress类,UPL类 详解

一、InetAddress类 作用:封装计算机的IP地址,不包含端口号 常用方法:1)String getHostAddress() --->获得IP地址 2)String getHostName()---->获得主机名 3)static InetAddress getByNam...

weixin_45397671的博客 1205

Java程序设计 网络编程 IP地址与InetAddress类

Java程序设计 网络编程 IP地址与InetAddress类 IP地址 互联网上的每一台计算机都有一个唯一表示自己的标记,这个标记就是IP地址 IP地址使用32位长度二进制数据表示,一般在实际中看到的大部分IP地址都是以十进制的数据形式表示 IP地址格式 网络地址+主机地址 网络号:用于识别主机所在的网络 主机号:用于识别该网络中的主机 IP地址分为: A类保留给政府机构 B类分配给中等规模的公司 C类分配给任何需要的人 D类用于组播 E类用于实验 分类 范围 A类地址 1.0.0.1

小旺的博客 1040

网络编程,InetAddress类

网络编程 三要素: 1.IP 设备在网络中的唯一标识 底层时二进制,32bit使用点分十进制进行转换 2.端口号 程序在设备中的唯一标识 范围在0-65536,其中0-1023被知名程序或服务占用 端口号不能有冲突 3.通讯协议 UDP: 无连接协议(发送端和接收端不会建立连接)...

ZZJXP的博客 418

Java网络编程——InetAddress类

目录1.节点(NODE)2.Internet地址或IP地址3.域名系统2>详细了解InetAddress类1.创建新的InetAddress对象程序一: 显示某地址的程序 程序二:查找本地机器的地址2.InetAddress的常用方法1.小DEMO2.给定地址,找到主机名称3.找到本地机器的IP地址3>.InetAddress缓存4>.地址类型5>.测试可达性 6>.Object方法7>. Inet4Address和Inet6Address连接到Internet的设备称为节点。计算机节点称为主机每个节点或者

weixin_62017112的博客 4487

网络编程三要素与InetAddress类的使用

java是Internet上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序。java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被颖仓在java的本机安装系统里,由JVM进行控制。并且Java实现了一个跨平台网络库,程序员面对的是一个统一的网络编程环境。

m0_64703222的博客 94
上一篇: NVL,NVL2,NULLIF有什么区别,及使用.
下一篇: orcale中的包和包体创建及使用.
Java_wucao
博客等级 码龄11年 272粉丝 42原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Java_wucao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值