JAVA网络编程

【TX】Java网络编程提供了两种通讯协议:TCP【传输控制协议】和UDP【数据报协议】。这两种都属于传输层协议,TCP是可靠的,传输前会采用“三次握手”的方式建立连接,以保证传输的可靠性;UDP是不可靠的传输协议,即发出去的数据不一定能接受的到,网上聊天工具一般采用此种协议。

一:基本概念

1:【IP】IP是互联网上每一台计算机的唯一标识,使用32位长度的二进制数据表示。

IP地址=网络地址+主机地址

    网络号:用于识别主机所在的网络。

    主机号:用于识别该网络中的主机。

IP地址分为5类,在开发中经常使用127.0.0.1表示本机的IP地址。

我们先看一下JAVA对于IP的支持,获取本机或远程IP及主机名:

		InetAddress Inet=InetAddress.getLocalHost();//获取本机的InetAddress对象
		InetAddress Inet1=InetAddress.getByName("www.baidu.com");//通过主机名获取InetAddress对象
		
		String hostName = Inet.getHostName();//获取本机名
		String hostAddress = Inet.getHostAddress();//获取本机的IP
		System.out.println(hostName+":"+hostAddress);
		
		String hostName1 = Inet1.getHostName();
		String hostAddress1 = Inet1.getHostAddress();
		System.out.println(hostName1+":"+hostAddress1);
		
		boolean reachable = Inet.isReachable(2000);//判断地址是否可以到达,同时指定超时时间

执行结果:

Lenovo-PC:176.132.251.36
www.baidu.com:115.239.210.27
true

2:【URL】Uniform Resouce Locator  统一资源定位符。

public class URLTest {
	@SuppressWarnings("resource")
	public static void main(String[] args) throws Exception {
		URL url=new URL("http://news.sina.com.cn/c/nd/2018-03-17/doc-ifyshfuq6442303.shtml");
		
		InputStream openStream = url.openStream();//读取URL内容
		Scanner scanner = new Scanner(openStream);//
		scanner.useDelimiter("\n");//设置读取分割符
		while(scanner.hasNext()){
			System.out.println(scanner.next());
		}
		
		URLConnection connection = url.openConnection();//建立连接
		int contentLength = connection.getContentLength();//获取内容长度
		String contentType = connection.getContentType();//获取内容类型

		System.out.println(contentLength);
		System.out.println(contentType);
	}
}

程序执行结果:

..............省略.............
<!-- body code end -->
</body>
</html>

49517
text/html

可以发现下载下来的内容都是页面的HTML代码。

在使用URL访问时,如果URL全部为英文,则可以正常显示,如果包含有中文,则会进行编码。在JAVA中如果要完成编码与解码就需要使用URLEncode和URLDecode两个类。URLEncode可以对传递的内容进行编码,URLDecode可以对传递的内容进行解码。

                String key="中文网名";
		String encode = URLEncoder.encode(key,"UTF-8");
		System.out.println("编码之后的内容:"+encode);
		String decode = URLDecoder.decode(encode,"UTF-8");
		System.out.println("解码之后的内容:"+decode);

程序执行结果:

编码之后的内容:%E4%B8%AD%E6%96%87%E7%BD%91%E5%90%8D
解码之后的内容:中文网名




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值