java的基本网络应用

java的基本网络应用

1、InetAddress类的使用:

(1)InetAddress类还有两个子类,即Inet4Address 和Inet6Address,它们分别是IPv4地址和IPv6地址。

(2)两个静态方法来获取InetAddress实例:

getByName(String host):根据主机获取对应的InetAddress对象。

getByAddress(byte[] addr):根据原始IP地址来获取对应的InetAddress对象。

(3)三个方法来获取InetAddress实例对应的IP地址和主机名:

String getCanonicalHostName():获取此IP地址的完全限定域名。

String getHostAddress():返回该InetAddress实例对应的IP地址(字符串形式)。

String getHostName():获取此IP地址的主机名。

2、URL(Uniform Resource Locator)类代表统一资源定位器,统一资源定位器是指互联网“资源”的字。

(1)URL的组成:协议名、主机、端口、资源。

(2)URL的格式为“Protocol://host:port/resourceName”

(3)用于创建URL对象的常见的两个方法: 

public URL(String str)和public URL(URL context,String str);

(4)方法:

String getFile():获取此URL的资源名。

String getHost():获取此URL的主机名。

String getPath():获取此URL的路径部分。

int getPort():获取此URL的端口号。

String getProtocol():获取此URL的协议名称。

String getQuery():获取此URL 的查字符串部分。

URLConnection openConnection():返回一个URLConnection对象,他代表到URL所引用的远程对象的连接。

InputStream openStream():打开于此URL的连接,并返回一个用于读取该URL资源的InputStream

3、通过URL来下载网页信息

import java.net.*;

import java.io.*;

public class TestNet3{

public static void main(String args[]){

URL url = new URL("http://www.sina.com/");

InputStreamReader isr = new InputStreamReader(url.openStream());

BufferedReader in = new BufferedReader(isr);

String inputLine;

FileOutputStream fos = new FileOutputStream("d://mydownloadhtml.html");

while((inputLine=in.readLine())!=null){

fos.write(inputLine.getBytes());//写入文件

//System.out.println(inputLine);//显示到控制台

}
in.close();

}


}


4、URLDecoder(解码)类和URLEncoder(编码)类用于完成普通字符串和application/x-www-from-

urlencoded MIME字符之间的相互转换。

5、代码演示"乱码”转换成普通字符串。



import java.io.UnsupportedEncodingException;

import java.net.URLDecoder;

import java.net.URLEncoder;




public class TestNet4 {



public static void main(String[] args) {
try {
String str1 = URLDecoder.decode("Java%e5%BC%80%E5%8F%91", "UTF-8");
System.out.println(str1);
String str2 = URLEncoder.encode("Java程序开发", "UTF-8");
System.out.println(str2);
} catch (UnsupportedEncodingException e) {
System.out.println(e.getMessage());

}



}


}




基于Socket的网络编程


1、发送端代码:


import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;




public class TestNet5 {//发送端代码



public static void main(String[] args) {
try {

DatagramSocket ds = new DatagramSocket();

String str = "hello,world!!";//要发送的内容,

DatagramPacket dp = new 

DatagramPacket(str.getBytes(),str.length(),InetAddress.getByName("192.168.13.32"),5000);

ds.send(dp);

System.out.println("发送完毕!");

ds.close();
} catch (Exception e) {

e.printStackTrace();

}//创建socket对象

}


}


2、接受代码:


import java.net.DatagramPacket;
import java.net.DatagramSocket;




public class TestNet6 {//接收端



public static void main(String[] args) {

try {
DatagramSocket ds = new DatagramSocket(5000);

byte[] buf = new byte[1024];

DatagramPacket dp = new DatagramPacket(buf,1024);

ds.receive(dp);

String str = new String(dp.getData(),0,dp.getLength());

String add = dp.getAddress().getHostAddress();

int port = dp.getPort();

System.out.println(str+"from"+add+":"+port);

System.out.println("获取完毕!");

} catch (Exception e) {

e.printStackTrace();

}




}




}















URL url = new URL()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值