`

网络编程 几个基本的类

 
阅读更多

 

 

 

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 ...

    C#网络编程C#网络编程初探

    我们知道C#和C++的差异之一,就是他本身没有类库,所使用的类库是.Net... 首先我们解释一下在网络编程时候,经常遇到的几个概念:同步(synchronous)、异步(asynchronous)、阻塞(Block)和非阻塞(Unblock):

    Visual C#网络编程技术与实践源代码

    全书共分13章,主要内容包括网络编程原理、Visual C# 2005的套接字以及多线程的开发、基于各种不同协议的网络编程应用模块,并通过几个典型的实例介绍了Visual C# 2005网络编程的实际应用。 本书注重代码的通用性和...

    基础深化和提高-网络编程

    Java的网络编程通常涉及以下几个方面: Socket编程:基于Socket套接字,通过TCP或UDP协议进行网络通信。通过创建Socket对象,程序可以在网络上进行数据传输和通信。 URL和URLConnection:Java提供了java.net.URL和...

    TCPIP高效编程:改善网络程序的44个技巧 PDF中文版带书签-目录

    1.1 几个约定 1 1.2 本书其余部分的内容介绍 2 1.3 客户端—服务器结构 4 1.4 对基本套接字API的回顾 5 1.5 小结 12 第2章 基本概念 13 2.1 技巧1:理解面向连接和无连接协议之间的区别 13 2.2 技巧2:理解...

    42道Java网络编程相关面试题含答案(很全)

    Java网络编程主要涉及以下几个方面的内容: 网络基础知识:了解网络通信的基本原理,包括IP地址、端口号、协议等。 Socket编程:Socket是Java中实现网络通信的基础类。通过Socket类,可以实现基于TCP和UDP协议的网络...

    VB网络编程实例

    33.htm 获得用户网络登录名 ◆ 34.htm 基 于Win95 的VB5 串 口 通 信 程 序 ◆ 35.htm 基于Win95的VB5串口通信程序 ◆ 36.htm 几个设置IE的API ◆ 37.htm 检测运程数据传送的断线 ◆ 38....

    Socket网络编程学习笔记

    在前面讲述的篇幅中,发送的都是文本信息,我们只要通过Encoding中的几个方法把文本转化成二进制数组就可以利用Socket来传输了,这对于一些基本的信息传输能够得到满足,但对于一些复杂的消息交流,则有些“吃力”。...

    BP神经网络对iris数据集进行分类 MATLAB

    对isir数据集进行分类,各选取三种花的25个样本作为训练数据,其余作为测试数据,多训练几次,准确率可以达到98%左右

    Java网络编程(第三版)中文版.part11.rar

    Java网络编程(第三版)中文版(不看后悔) JAVA Network Programming,Third Edition 原出版社: O'Reilly 作者: (美)Elliotte Rusty Harold [作译者介绍] 译者: 朱涛江[同译者作品] 林剑 丛书名: O'...

    Java网络编程(第三版)中文版.part06.rar

    Java网络编程(第三版)中文版(不看后悔) JAVA Network Programming,Third Edition 原出版社: O'Reilly 作者: (美)Elliotte Rusty Harold [作译者介绍] 译者: 朱涛江[同译者作品] 林剑 丛书名: O'...

    Java网络编程(第三版)中文版.part07.rar

    Java网络编程(第三版)中文版(不看后悔) JAVA Network Programming,Third Edition 原出版社: O'Reilly 作者: (美)Elliotte Rusty Harold [作译者介绍] 译者: 朱涛江[同译者作品] 林剑 丛书名: O'...

    Java网络编程(第三版)中文版.part09.rar

    Java网络编程(第三版)中文版(不看后悔) JAVA Network Programming,Third Edition 原出版社: O'Reilly 作者: (美)Elliotte Rusty Harold [作译者介绍] 译者: 朱涛江[同译者作品] 林剑 丛书名: O'...

    Java网络编程(第三版)中文版.part01.rar

    Java网络编程(第三版)中文版(不看后悔) JAVA Network Programming,Third Edition 原出版社: O'Reilly 作者: (美)Elliotte Rusty Harold [作译者介绍] 译者: 朱涛江[同译者作品] 林剑 丛书名: O'...

    Java网络编程(第三版)中文版.part03.rar

    Java网络编程(第三版)中文版(不看后悔) JAVA Network Programming,Third Edition 原出版社: O'Reilly 作者: (美)Elliotte Rusty Harold [作译者介绍] 译者: 朱涛江[同译者作品] 林剑 丛书名: O'...

    Java网络编程(第三版)中文版.part02.rar

    Java网络编程(第三版)中文版(不看后悔) JAVA Network Programming,Third Edition 原出版社: O'Reilly 作者: (美)Elliotte Rusty Harold [作译者介绍] 译者: 朱涛江[同译者作品] 林剑 丛书名: O'...

    Java网络编程(第三版)中文版.part04.rar

    Java网络编程(第三版)中文版(不看后悔) JAVA Network Programming,Third Edition 原出版社: O'Reilly 作者: (美)Elliotte Rusty Harold [作译者介绍] 译者: 朱涛江[同译者作品] 林剑 丛书名: O'...

    Java网络编程(第三版)中文版.part10.rar

    Java网络编程(第三版)中文版(不看后悔) JAVA Network Programming,Third Edition 原出版社: O'Reilly 作者: (美)Elliotte Rusty Harold [作译者介绍] 译者: 朱涛江[同译者作品] 林剑 丛书名: O'...

    Java网络编程(第三版)中文版.part13.rar

    Java网络编程(第三版)中文版(不看后悔) JAVA Network Programming,Third Edition 原出版社: O'Reilly 作者: (美)Elliotte Rusty Harold [作译者介绍] 译者: 朱涛江[同译者作品] 林剑 丛书名: O'...

Global site tag (gtag.js) - Google Analytics