Java 中专门提供 java.net 包,方便开发网络程序。Java 的网络编程包括了两种通信协议;【TCP(Transmission Control Protocal)】【UDP(User Datagram Prptocol)】
IP 是互联网上的每一台计算机的唯一标记;
IP 可分为两类
【IPv4】32位,分4段,每段范围 0-225 十进制表示;(1)
使用4个8位的二进制数据表示,每8位之间使用圆点隔开,每个8位整数可以转换成一个0~255的十进制整数,因此我们一般看到的IP地址类似:192.168.1.1(这4段组成的个数有限度,大概是40多亿的样子,不够用,出现Ipv6);
【IPv6】128位,分8段,0000~FFFF的十六进制数值,冒号分割。如:1080:0:0:0:8:800:200C:417A
IP地址号段分类:A类留给政府机构,B类分配给中等规模的公司,C类分配给任意需要的人,D类用于组播,E类用于实验,给类可容纳的地址数目不同
(1) InetAddress类要来表示IP地址,有两个子类
|-- Inet4Address(IPv4)
|-- Inet6Address(IPv6)
(2) 常用方法(主要了解获得IP地址对象的方法)
|-- static InetAddress getLocalHost():返回本地主机;
|-- static InetAddress getByName(String host) :通过主机名/域名获取IP地址。查找存在的一个IP地址,如果主机名或域名写错抛出异常;
|-- static InetAddress getByAddress(byte[] addr) :根据一个IP地址获得一个IP地址对象;
注意:参数是一个byte[]数组,如果大于127的需要进行强转成byte;
|-- boolean isReachable(int timeout):测试是否可以连接到该地址(类似ping)
public void testIp() throws Exception {
InetAddress localHost = InetAddress.getLocalHost();
System.out.println(localHost);
InetAddress[] address1 = InetAddress.getAllByName("SKY-20190405AAU");
for(InetAddress address:address1) {
System.out.println(address);
}
System.out.println(InetAddress.getByAddress(new byte[]{14,(byte)215,(byte)177,39}));
System.out.println(InetAddress.getByName("www.baidu.com").getHostAddress());//180.97.33.107
System.out.println(InetAddress.getByName("www.taobao.com").getHostAddress());//118.112.14.230
System.out.println(InetAddress.getByName("www.jindong.com").getHostAddress());//61.92.24.81
System.out.println(InetAddress.getByName("www.baidu.com").isReachable(50));
}
1. 什么是端口
(1) 如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536(即:2^16)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1);
(2) 简单的说:一个电脑上的应用程序都绑定了一个对应的编号(端口),通过IP可以定位到指定的主机(电脑),再加上端口就可以定位到指定的程序了;
2. 端口的分类
(1) 公认端口:0~1023,他们紧密绑定一些服务
(2) 注册端口:1024~49151,松散绑定一些服务
(3) 动态端口:49152~65535,动态使用的端口,程序一般不会使用这些端口
分类作用:现在对一些比较早的程序,它使用比较早,使用一些小的端口,被人熟知了,我们自己的开发的应用程序,尽量避免这些端口;
3. 注意:
(1) 同一台机器上不能有两个程序使用同一个端口,会冲突;
(2) 我们开发过程中一般选用注册端口或动态端口范围内的;
(3) 以后开发中最好记住我们用到过的常用软件的端口,避免我们知己设定端口的时候和他们冲突;
① Tomcat:8080/80,Mysql:3306
1. 什么是URL
(1) URL(Uniform Resource Locator)统一资源定位符,可以直接使用此类找到互联网上的资源如一个简单的网页。
(2) URL一般由http协议,资源所在主机(域名或IP),端口,资源名称部分组成;
如:http://itsource.cn:80/class_info/java_jichu.html
2. URL类中的常用方法:
(1) URL(String protocol, String host, int port, String file):构建一个URL对象;
(2) URL(String url):构建一个URL对象;
(3) InputStream openStream():返回一个用于从该连接读入的 InputStream;
(4) URI toURI():返回与此URL等效的URI;
(5) 更多方法请查看URL对应的API文档;
3. 通过URL读取网络文件数据体验
(1) 创建指定连接的URL对象
(2) 从URL对象上得到输入流
循环,从输入流中获得数据并打印(或者保存到本地磁盘中:相当于一个资源下载)
(1) 概念:Transmission Control Protocol 传输控制协议,TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层(Transport layer)通信协议。当客户和服务器彼此交互数据前,必须先在双方之间建立一个TCP连接,之后才能传输数据;
(2) 此协议中有两个类Socket 和ServerSocket ,其中有一些方法能够实现在两个不同的终端之间传输数据(客户端与服务端);
(1) UDP是用户数据报协议,是一个简单的面向数据报的运输层协议,UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能保证他们能到达目的。由于UDP在传输数据报前不用在客户和服务器之间建立一个连接,并且没有超时重发机制,故而传输速度很快;
(2) TCP的所有操作必须建立可靠的连接,这样会浪费很大的性能,为此UDP这种不可靠的连接出现并成为聊天工具的宠儿;
(3) UDP开发中使用DatagramPacket包装一条要发送的信息,之后使用DatagramSocket完成发送操作,也能够实现在两个终端之间传输数据;
1. 基于连接与无连接;
2. 对系统资源的要求(TCP较多,UDP少);
3. UDP程序结构较简单 ;
4. 流模式与数据报模式 ;
5. TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证;
页面更新:2024-03-13
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号