(1)利用Java InetAddress获取本机的IP地址
import java.net.InetAddress;
public class GetLocalHost {
public static void main(String[] args) {
InetAddress address = null;
try {
address = InetAddress.getLocalHost();
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(address);
}
}
(2)java根据域名获得IP地址
import java.net.InetAddress;
import java.net.UnknownHostException;
public class GetIP {
public static void main(String[] args) {
InetAddress cumt = null;
try {
cumt = InetAddress.getByName("www.baidu.com");
} catch (UnknownHostException e) {
e.printStackTrace();
}
System.out.println(cumt);
}
}
可以看出,与DNS服务器连接只需要一条语句
(3)URL类获取其特征的主要方法:
URL类提供的方法主要包括URL类对象特征(如协议名、主机名、文件名、端口号和标记)的查询和对URL类对象的操纵
String getProtocol();返回URL的协议名
String getHost(); 返回URL的主机名
Int getPort(); 返回URL的端口号,如果没有端口号就返回-1
String getFile(); 返回URL的标记
(4)用URL获取网络上资源的HTML文件
import java.io.DataInputStream;
import java.net.URL;
public class ReadURL {
public static void main(String[] args) {
try {
//根据参数args[0])构造一个绝对的URL对象
URL url = new URL("http://www.baidu.com/");
//通过URL对象打开一个数据输入流
DataInputStream dis = new DataInputStream(url.openStream());
String inputLine;
while((inputLine = dis.readLine()) != null){
System.out.println(inputLine);
}
dis.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
(5)用URL获取文本和图像
用URL可以方便的获取文本和图像。文本数据源可以是网上或者本机上的任何文本文件,如果要用URL来获取图像数据,就不能用openStream()方法,而是要使用方法getImage(URL),这个方法会立即生成一个Image对象,并返回程序对象的引用,但这并不意味着图像的数据已经读到内存中,而是系统与此同时产生一个线程去读取图像文件的数据,因此,就可能存在程序已经执行到getImage()后面的语句部分系统还在读取图像文件数据的情形。
import java.awt.Color;
import java.awt.Event;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.Toolkit;
import java.io.DataInputStream;
import java.net.URL;
//GetDataByURL类继承Frame类,生成一个带标题的窗口
public class GetDataByURL extends Frame{
private static final long serialVersionUID = 1L;
private MenuBar menuBar;
private boolean drawImage = false;
private DataInputStream dataInputStream;
private int i = 0;
private String line_str;
private boolean first = true;
private Font font;
public GetDataByURL() {
//生成一个菜单条
menuBar = new MenuBar();
setMenuBar(menuBar);
//为菜单条第一个菜单取名“display”
Menu display = new Menu("display");
menuBar.add(display);
//生成display菜单下的两个菜单项
MenuItem beanty_display = new MenuItem("display beauty");
MenuItem text_display = new MenuItem("display text");
display.add(beanty_display);
display.add(text_display);
//设置背景颜色和文本的字体
setBackground(Color.white);
font = new Font("System",Font.BOLD,20);
//设置带有菜单的窗口的标题
setTitle("sample:use URL get data");
setSize(400,300);
//显示窗口
show();
}
//处理窗口中的菜单事件
@Override
public boolean action(Event evt, Object what) {
if(evt.target instanceof MenuItem){
String message = (String)what;
if(message == "display beauty"){
drawImage = true;
doDrawImage();
}else {
drawImage = false;
first = true;
if(message == "display text"){
doWrite("d:/tt.txt");
}
}
}
return true;
}
//处理窗事件
@Override
public boolean handleEvent(Event evt) {
switch(evt.id){
case Event.WINDOW_DESTROY:{
dispose();
System.exit(0);
}
default:{
return super.handleEvent(evt);
}
}
}
public static void main(String[] args) {
new GetDataByURL();
}
public void paint(Graphics g){
if(drawImage){
try {
URL image_url = new URL("https://www.ibm.com/developerworks/cn/web/wa-lo-json/fig001.jpg");
Toolkit object_Toolkit = Toolkit.getDefaultToolkit();
Image object_Image = object_Toolkit.getImage(image_url);
g.setColor(Color.white);
g.fillRect(0, 0, 300, 400);
g.drawImage(object_Image, 40, 80, 160,200,this);
} catch (Exception e) {
e.printStackTrace();
}
}else {
if(first){
first = false;
g.setColor(Color.white);
g.fillRect(0, 0, 400, 300);
g.setFont(font);
}
if(line_str != null){
g.drawString(line_str, 10, i*20);
i++;
}
}
}
private void doDrawImage(){
drawImage = true;
repaint();
}
private void doWrite(String url_str){
try {
//用参数url_str生成一个绝对的URL,它指向本机上的一个文本文件
URL url = new URL(url_str);
dataInputStream = new DataInputStream(url.openStream());
try {
i = 1;
line_str = dataInputStream.readLine();
while(line_str != null){
paint(getGraphics());
line_str = dataInputStream.readLine();
}
} catch (Exception e) {
e.printStackTrace();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
(6)URLConection()类
URL类仅提供读取地址为URL的web服务器内容的方法,如果除了读取其内容外,还要向URL对象发送服务请求及参数,那么必须使用URLConnection()类,利用URL类提供的openConnection()方法可以建立一个URLConnection类对象。然后,可以使用这个URLConection类对象绑定的数据输入流读URL的内容,使用这个URLconnection类对象绑定数据输出流发送服务请求及参数
URLConection类是一个以HTTP为中心的类,同时支持get()和post()方法,默认情况下为POST方法。
URL和URLConnection的区别在于前者代表一个资源的位置,后者代表一种连接。
import java.io.DataInputStream;
import java.net.URL;
import java.net.URLConnection;
public class ReadURLConnection {
public static void main(String[] args) {
try {
//根据绝对URL地址构造URL对象
URL cumtURL = new URL("http://www.baidu.com");
//利用cumtURL建立一个URLconnection连接
URLConnection cumtConnection = cumtURL.openConnection();
//获取cumtConnection对象的数据输入流
DataInputStream din = new DataInputStream(cumtConnection.getInputStream());
String inputLine;
while((inputLine = din.readLine()) != null){
System.out.println(inputLine);
}
din.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
Java网络高级编程Java网络高级编程Java网络高级编程Java网络高级编程Java网络高级编程Java网络高级编程Java网络高级编程Java网络高级编程Java网络高级编程Java网络高级编程Java网络高级编程Java网络高级编程
首先,Java提供了丰富的API来支持网络编程,如`java.net`和`javax.net`包,它们包含了用于创建和管理网络连接的类和接口。例如,Socket类用于实现基于TCP的双向通信,ServerSocket类用于监听和接受来自客户端的连接...
根据给定的文件标题“Java网络高级编程1.pdf”以及其描述和标签,我们可以推断出这份文档主要聚焦于Java语言在网络编程领域的高级应用。Java作为一种广泛应用的编程语言,在网络编程方面提供了丰富的API和框架,使得...
《Java网络高级编程》这本书是Java开发者进阶的宝贵资源,它深入探讨了Java在处理网络编程时的各种技术和概念。本书旨在帮助读者掌握如何利用Java语言构建高效、可靠的网络应用程序,涉及的内容广泛且深入。 首先,...
《Java网络高级编程源码》是由人民邮电出版社出版,由金勇华和曲俊生两位专家编著的一本深入探讨Java网络编程的专著。这本书涵盖了Java在互联网开发中的高级应用,旨在帮助读者理解并掌握Java网络编程的核心技术。 ...
在IT领域,Java是一种广泛应用的编程语言,尤其在并发编程和网络编程方面有着深厚的基础。以下将详细讨论《JAVA并发编程实践》和《Java网络高级编程》两本书中涵盖的关键知识点。 首先,让我们关注并发编程。并发...
《Java网络高级编程》这本书是Java开发者深入理解网络编程的重要参考资料。它涵盖了多个关键主题,旨在帮助程序员构建高效、安全的网络应用。以下是对这些知识点的详细解释: 1. **网络进程通信**:网络进程通信是...
Java高级编程涵盖了许多关键主题,这些主题在Java开发中至关重要,尤其对于提升程序员的技能水平和项目效率。以下是对每个章节的详细解释: 1. **Ch01 泛型和泛型接口** - **泛型**:泛型是Java 5引入的一个重要...
此书全面覆盖了Java网络编程的基础和高级概念,帮助开发者理解如何利用Java语言构建高效、可靠的网络应用程序。 在Java网络编程中,首要涉及的是I/O模型。书中会介绍基础的套接字(Socket)编程,包括TCP和UDP协议...
它不仅涵盖了网络编程的基础知识,也深入到高级特性和实践技巧,对于想要提升网络编程能力的Java程序员来说,是一本不可多得的参考书。通过阅读和实践书中的例子,读者不仅可以掌握理论知识,还能积累实际开发经验,...
8. **高级主题**:包括高级网络编程技术,如网络负载均衡、分布式系统、网络性能优化等。 9. **错误处理与调试**:学习如何处理网络编程中常见的异常,以及如何调试网络应用程序,提高代码的健壮性。 10. **最新...
根据提供的文件信息,“Java网络高级编程4.pdf”主要聚焦于Java网络编程的高级技术与实践。虽然提供的部分内容并未包含实际的技术细节,但从标题、描述以及标签来看,我们可以合理推测这本书涵盖了Java在网络编程...
在本资料中,《Java网络编程》第三版提供了深入浅出的讲解,旨在帮助开发者提升对这一领域的理解。 1. **基础概念**: - **网络模型**:Java网络编程基于OSI七层模型和TCP/IP四层模型。理解这些模型有助于理解网络...
这份"JAVA高级编程资料"涵盖了多线程、网络编程、文件与流以及集合类等重要主题,这些都是JAVA开发中不可或缺的部分。 首先,多线程是现代应用中并发执行任务的基础。JAVA提供了丰富的API来支持多线程编程,如...
Java2高级网络编程是计算机科学领域中的一个重要主题,尤其对于那些致力于成为一名优秀的Java开发者来说,这一部分的知识至关重要。北大青鸟作为知名的IT教育机构,其系列课程深入浅出地讲解了这一领域的核心概念和...
Java高级编程实用教程是针对已经掌握了Java基础的开发者们深入学习的一门课程,旨在提升他们的编程技巧和解决复杂问题的能力。本教程将涵盖多个关键领域,包括多线程、网络编程、I/O流、反射、异常处理、集合框架、...
1. Java网络编程基础 Java网络编程基于Java SE平台,它提供了丰富的API来处理网络通信。核心类如`Socket`和`ServerSocket`用于实现TCP/IP协议,`DatagramSocket`和`DatagramPacket`则涉及UDP协议。理解这些基础类的...