`

java高级网络编程(1)

阅读更多
(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();
		}
	}
}
2
3
分享到:
评论
6 楼 jiaguwen123 2012-06-05  
有很多方法都过时了。
5 楼 tag13346 2012-06-04  
卡菲牛奶 写道
tag13346 写道
没看到高在何处

哈哈,连载中...慢慢的

那我继续关注,LZ加油
4 楼 卡菲牛奶 2012-06-03  
tag13346 写道
没看到高在何处

哈哈,连载中...慢慢的
3 楼 tag13346 2012-06-03  
没看到高在何处
1 楼 foolishdault 2012-06-03  
会有多IP地址

相关推荐

    Java网络高级编程Java网络高级编程

    Java网络高级编程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网络高级编程1.pdf”以及其描述和标签,我们可以推断出这份文档主要聚焦于Java语言在网络编程领域的高级应用。Java作为一种广泛应用的编程语言,在网络编程方面提供了丰富的API和框架,使得...

    java网络高级编程PDF电子书

    《Java网络高级编程》这本书是Java开发者进阶的宝贵资源,它深入探讨了Java在处理网络编程时的各种技术和概念。本书旨在帮助读者掌握如何利用Java语言构建高效、可靠的网络应用程序,涉及的内容广泛且深入。 首先,...

    Java网络高级编程源码人邮金勇华曲俊生

    《Java网络高级编程源码》是由人民邮电出版社出版,由金勇华和曲俊生两位专家编著的一本深入探讨Java网络编程的专著。这本书涵盖了Java在互联网开发中的高级应用,旨在帮助读者理解并掌握Java网络编程的核心技术。 ...

    java并发编程和网络高级编程pdf

    在IT领域,Java是一种广泛应用的编程语言,尤其在并发编程和网络编程方面有着深厚的基础。以下将详细讨论《JAVA并发编程实践》和《Java网络高级编程》两本书中涵盖的关键知识点。 首先,让我们关注并发编程。并发...

    java 网络高级编程(PDF)201242

    《Java网络高级编程》这本书是Java开发者深入理解网络编程的重要参考资料。它涵盖了多个关键主题,旨在帮助程序员构建高效、安全的网络应用。以下是对这些知识点的详细解释: 1. **网络进程通信**:网络进程通信是...

    java高级编程PPT

    Java高级编程涵盖了许多关键主题,这些主题在Java开发中至关重要,尤其对于提升程序员的技能水平和项目效率。以下是对每个章节的详细解释: 1. **Ch01 泛型和泛型接口** - **泛型**:泛型是Java 5引入的一个重要...

    java网络编程第四版pdf

    它不仅涵盖了网络编程的基础知识,也深入到高级特性和实践技巧,对于想要提升网络编程能力的Java程序员来说,是一本不可多得的参考书。通过阅读和实践书中的例子,读者不仅可以掌握理论知识,还能积累实际开发经验,...

    Java网络编程(第4版)PDF

    此书全面覆盖了Java网络编程的基础和高级概念,帮助开发者理解如何利用Java语言构建高效、可靠的网络应用程序。 在Java网络编程中,首要涉及的是I/O模型。书中会介绍基础的套接字(Socket)编程,包括TCP和UDP协议...

    Java网络编程第三版.pdf

    8. **高级主题**:包括高级网络编程技术,如网络负载均衡、分布式系统、网络性能优化等。 9. **错误处理与调试**:学习如何处理网络编程中常见的异常,以及如何调试网络应用程序,提高代码的健壮性。 10. **最新...

    Java网络高级编程4.pdf

    根据提供的文件信息,“Java网络高级编程4.pdf”主要聚焦于Java网络编程的高级技术与实践。虽然提供的部分内容并未包含实际的技术细节,但从标题、描述以及标签来看,我们可以合理推测这本书涵盖了Java在网络编程...

    java网络编程

    在本资料中,《Java网络编程》第三版提供了深入浅出的讲解,旨在帮助开发者提升对这一领域的理解。 1. **基础概念**: - **网络模型**:Java网络编程基于OSI七层模型和TCP/IP四层模型。理解这些模型有助于理解网络...

    JAVA高级编程资料

    这份"JAVA高级编程资料"涵盖了多线程、网络编程、文件与流以及集合类等重要主题,这些都是JAVA开发中不可或缺的部分。 首先,多线程是现代应用中并发执行任务的基础。JAVA提供了丰富的API来支持多线程编程,如...

    北大青鸟系列课程-Java2高级网络编程

    Java2高级网络编程是计算机科学领域中的一个重要主题,尤其对于那些致力于成为一名优秀的Java开发者来说,这一部分的知识至关重要。北大青鸟作为知名的IT教育机构,其系列课程深入浅出地讲解了这一领域的核心概念和...

    Java高级编程实用教程

    Java高级编程实用教程是针对已经掌握了Java基础的开发者们深入学习的一门课程,旨在提升他们的编程技巧和解决复杂问题的能力。本教程将涵盖多个关键领域,包括多线程、网络编程、I/O流、反射、异常处理、集合框架、...

    JAVA网络编程大全,pdf版

    1. Java网络编程基础 Java网络编程基于Java SE平台,它提供了丰富的API来处理网络通信。核心类如`Socket`和`ServerSocket`用于实现TCP/IP协议,`DatagramSocket`和`DatagramPacket`则涉及UDP协议。理解这些基础类的...

Global site tag (gtag.js) - Google Analytics