`

网络编程 几个基本的类

 
阅读更多

 

 

 

1 几个常用类的使用:

 

	public static void main(String[] args) {

		try {
			// InetAddress 类 代表网上 ip地址或者域名
			InetAddress address = InetAddress.getLocalHost();  
			System.out.println("hostAddress: " + address.getHostAddress()); // hostAddress: 192.168.11.23
			System.out.println("hostName: " + address.getHostName()); // hostName: USER-20161008VQ  可以计算机 右键-属性 看到 计算机名
			
			address = InetAddress.getByName("www.baidu.com");
			System.out.println("hostAddress: " + address.getHostAddress()); // hostAddress: 220.181.112.244
			System.out.println("hostName: " + address.getHostName()); // hostName: www.baidu.com 可以计算机 右键-属性 看到 计算机名
			
			address = InetAddress.getByName("220.181.112.244");
			System.out.println("hostAddress: " + address.getHostAddress()); // hostAddress: 220.181.112.244
			System.out.println("hostName: " + address.getHostName());// hostName: 220.181.112.244 输出ip而不是域名。如果这个IP地 址不存在或DNS服务器不允许进行IP地址和域名的映射,getHostName方法就直接返回这个IP地址
			
			// InetSocketAddress 代表网上 ip地址+端口 
			InetSocketAddress addr1 = new InetSocketAddress("127.0.0.1" , 9999) ;
			System.out.println(addr1.getHostName() + " port is: " + addr1.getPort() );
		    address = addr1.getAddress();
			System.out.println(address.getHostAddress());

			// URL类
			try {
				URL url = new URL("http://www.baidu.com:80/index.html?uname=zm") ;
				System.out.println("协议:"+url.getProtocol()); // 协议:http
				System.out.println("域名:"+url.getHost()); // 域名:www.baidu.com
				System.out.println("端口:"+url.getPort());// 端口:80
				System.out.println("资源:"+url.getFile()); // 资源:/index.html?uname=zm
				System.out.println("相对路径:"+url.getPath()); // 相对路径:/index.html
				System.out.println("锚点:"+url.getRef()); // 锚点:null 锚点就是# 如果是这个链接http://www.baidu.com:80/index.html#a?uname=zm 那么结果是锚点:a?uname=zm  url.getQuery()结果是null
				System.out.println("参数:"+url.getQuery());// 参数:uname=zm
			} catch (MalformedURLException e) {
				e.printStackTrace();
			}
			
			// 爬虫  使用 URL类的openStream() 实现从互联网服务器上下载文件
			try {
				String line ;
				URL url = new URL("http://www.baidu.com/") ;
				BufferedReader br = new BufferedReader(new InputStreamReader(new BufferedInputStream(url.openStream()),"UTF-8"));
				
				BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(new File("D:/baidu.html"))),"UTF-8"));
				while( null != (line = br.readLine()) ) {
					bw.append(line);
					bw.newLine();
				}
				bw.flush();
				bw.close();
				br.close();
			} catch (Exception e) {
				e.printStackTrace();
			}
			
			
			
		} catch (UnknownHostException e) {
			e.printStackTrace();
		}
		
	}

 

 

2 UDP(User Data Protocol,用户数据报协议) 基本使用的类:

数据去找服务器端

 

服务端:

/**
 * 服务端   客户端和服务器端都是使用同样的类和封装数据的类 只不过使用的方法不同
   DatagramSocket(客户端服务端类) + DatagramPacket(封装数据的类)
 * 1、创建服务端 +端口
 * 2、准备接受容器
 * 3、封装成 包
 * 4、接受数据
 * 5、分析数据 字节数组-->double
 * 6、释放
 * @author Administrator
 *
 */
public class Server {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		//1、创建服务端 +端口
		DatagramSocket server = new DatagramSocket(8888);
		//2、准备接受容器
		byte[] container = new byte[1024];
		//3、封装成 包 DatagramPacket(byte[] buf, int length) 		
		DatagramPacket packet =new DatagramPacket(container, container.length) ;
		//4、接受数据 打开通道 接收数据到 packet中
		server.receive(packet);
		//5、分析数据
		//byte[] data = packet.getData();
		//int len = packet.getLength();
		//System.out.println(new String(data,0,len));
		double data =convert(packet.getData());
		System.out.println(data);
		//6、释放
		server.close();
		
	}
	/**
	 * 字节数组 +Data 输入流
	 * @param data
	 * @return
	 * @throws IOException 
	 */
	public static double convert(byte[] data) throws IOException{
		DataInputStream dis =new DataInputStream(new ByteArrayInputStream(data));
		double num =dis.readDouble();
		dis.close();
		return num;
	}
}


客户端:

/**
 * 客户端
 * 1、创建客户端 +端口
 * 2、准备数据   double -->字节数组   字节数组输出流
 * 3、打包(发送的地点 及端口)
 * 4、发送
 * 5、释放
  B/S架构:  服务器上的内容通过IO下载到浏览器 ,浏览器相当于一个大大客户端,是基于tcp ftp协议通讯
  C/S架构:  自由定制 自己开发
 * 
 * 
 * @author Administrator
 *
 */
public class Client {

	/**
	 * @param args
	 * @throws IOException 
	 */
	public static void main(String[] args) throws IOException {
		//1、创建客户端 +端口
		DatagramSocket client = new DatagramSocket(6666);
		//2、准备数据
		double num =89.12;
		byte[] data =convert(num);
		//3、打包(发送的地点 及端口) DatagramPacket(byte[] buf, int length, InetAddress address, int port)
		DatagramPacket packet = new DatagramPacket(data,data.length,new InetSocketAddress("localhost",8888));
		//4、发送
		client.send(packet);
		//5、释放
		client.close();
		
	}
	
	/**
	 * 字节数组 数据源  +Data 输出流
	 * @param num
	 * @return
	 * @throws IOException 
	 */
	public static byte[] convert(double num) throws IOException{
		byte[] data =null;
		ByteArrayOutputStream bos = new ByteArrayOutputStream();
		DataOutputStream dos =new DataOutputStream(bos); // 将数据写到字节输出流中 但是不落地到目标文件中 
		dos.writeDouble(num);
		dos.flush();
		
		//获取数据
		data = bos.toByteArray();
		dos.close();		
		return data;
		
	}
}

 

 

 

分享到:
评论

相关推荐

    网络编程实用教程(第三版).zip

    4.2.2 几个主要的类 91 4.3 CObject类 95 4.3.1 CObject类的定义 95 4.3.2 CObject类的特性 96 4.4 消息映射的实现 98 4.5 MFC对象的创建 102 4.5.1 MFC对象的关系 102 4.5.2 MFC提供的接口 104 ...

    网络编程作业,包括一个运行过的和几个代码

    "几个完整代码"则意味着有多个不同的网络编程案例,可能涵盖了多种网络协议(如TCP/IP)和编程模型(如同步/异步,阻塞/非阻塞)。 标签中提到的"doc"可能是指包含文档的Microsoft Word文件,这些文档可能详细解释...

    Windows网络编程 杨秋黎 课后习题答案.pdf

    在介绍知识点之前,需要明确一点:Windows网络编程是一个比较广泛的领域,涵盖了很多基础概念和高级技巧,而提供的文件内容仅涉及到IP地址和子网掩码相关的一些习题答案。因此,以下内容将主要围绕IP地址分类、子网...

    C#网络编程实例--几个适用的程序源码

    这些基本概念和类是C#网络编程的基础。通过分析和运行提供的源码,你可以深入理解它们的工作原理,并学会如何在实际项目中应用。记住,实践是提升技能的关键,所以不要只是阅读代码,更要动手尝试,甚至根据需求进行...

    UNIX网络编程卷1.pdf

    本书的知识点涵盖了以下几个方面: 1. **网络基础**:首先,书中介绍了互联网的基础架构,包括TCP/IP协议族、OSI模型以及IP地址、子网掩码和端口号等基本概念。此外,还讨论了网络层的IP协议、传输层的TCP和UDP协议...

    网络编程源程序大全

    这些源代码可能包括以下几个方面的内容: 1. **套接字(Socket)编程**:C#中的Socket类是网络通信的基础,它可以用来创建TCP或UDP连接。源码可能涵盖了客户端和服务器端的实现,展示了如何进行数据的发送与接收。 ...

    vc6.0网络编程方法

    在VC6.0中使用`CSocket`类进行网络编程,实现服务器与客户端之间的通信,通常涉及以下几个步骤: 1. **创建套接字**:首先,通过调用`CSocket`的构造函数创建一个空对象,然后使用`Create`方法初始化底层套接字。...

    JAVA网络编程学习资料

    本学习资料主要涵盖了以下几个重要知识点: 1. **Socket套接字**: Java中的Socket是网络通信的基础,它提供了低级别的、面向连接的、双向通信的通道。Socket编程主要包括服务器端的ServerSocket类和客户端的...

    visual c++网络编程教程

    学习Visual C++网络编程,你需要掌握以下几个关键知识点: 1. Winsock基础:理解Winsock的初始化、错误处理和关闭过程,以及如何使用socket对象进行数据传输。 2. 套接字类型:区分流套接字(TCP)和数据报套接字...

    Java网络编程学习资料

    本文将深入探讨标题和描述中提及的几个关键知识点:Java套接字编程、Java的网络功能与编程基础、TCP网络协议以及Java Transaction API。 首先,我们来了解**Java套接字编程**。套接字(Socket)是实现进程间通信的...

    网络编程PDF

    在Java中,网络编程主要涉及到以下几个关键概念: 1. IP地址:网络中的每台计算机都必须有一个唯一的地址,以便在互联网上进行标识和通信。IP地址有两种形式:域名形式和IP地址数字形式。域名是人们易于理解和记忆...

    unit14 网络编程概述(169).rar

    在Java软件开发中,网络编程是一项至关重要的技能,它允许程序通过网络进行通信,实现数据交换和服务交互。...通过系统学习这部分内容,开发者将具备基本的网络编程能力,能够创建自己的网络应用程序。

    C#网络编程实作教程

    1. **基础网络概念**:首先,我们需要了解网络编程的基础知识,包括TCP/IP协议栈、网络数据传输的基本原理、套接字(Socket)编程等。TCP/IP协议是互联网通信的基础,理解其分层结构和工作流程对于网络编程至关重要...

    C++网络编程聊天

    通过学习和实践这个项目,开发者可以深入理解网络编程的基本原理,掌握C++中如何使用socket进行网络通信,并且对多线程编程有更直观的认识。此外,对于使用过时工具(如VC++6.0)的挑战,也可以提升开发者适应不同...

    C#网络编程实例教程

    在C#网络编程中,主要涉及以下几个核心知识点: 1. **网络基础**:首先,你需要了解网络通信的基本原理,包括TCP/IP协议栈、OSI七层模型以及HTTP、FTP等常用协议的工作机制。这些基础知识是构建网络应用的基础。 2...

    java网络编程实例3

    在这个“Java网络编程实例3”中,我们将深入探讨这些关键知识点。 1. **TCP/IP协议**:TCP/IP是互联网的基础,Java提供了Socket类和ServerSocket类来支持TCP协议。通过创建Socket对象,客户端可以连接到服务器,...

    JAVA网络编程(源代码)

    在JAVA网络编程中,主要涉及以下几个关键知识点: 1. **套接字编程**:JAVA的Socket类和ServerSocket类是进行客户端-服务器通信的基础。Socket代表了网络上的一个连接,ServerSocket用于监听并接受来自客户端的连接...

    面向对象网络编程电子书pdf版

    在面向对象网络编程中,主要涉及以下几个关键知识点: 1. 面向对象编程(OOP)基础:这是理解面向对象网络编程的前提。OOP主要包括类、对象、封装、继承和多态等概念。通过定义类来抽象现实世界中的实体,创建对象...

    Java网络编程的研究.pdf

    Java网络编程的研究可以分为以下几个方面: 1. 网络通信基础:介绍网络通信的基本概念,如TCP/IP协议、Socket编程等。 Java语言提供了四种网络功能:URL、InetAddress、Socket、Datagram。其中,Socket类是基于TCP...

    java网络编程小练习

    在这个小练习中,我们关注的是几个核心类:`Server`、`Client`、`Reader`以及`ReaderThread`。这些类通常在构建客户端-服务器应用程序时扮演关键角色。 1. **Java网络编程基础** Java提供了丰富的API来支持网络...

Global site tag (gtag.js) - Google Analytics