【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
解码之后的内容:中文网名