Collection

网络编程:

网络:通过多台计算机构建的一个大网

1:为什么需要网络?

多台计算机通过网络连接,进行通信,数据交互、数据共享。

去除地域限制 拉近人与人之间的举例

2:网络通信的基石

三大基石(ip标示计算机 协议通信规则 端口定位应用程序)

InetAddress类:

这个类是对IP地址的封装

常用方法:
  1. static InetAddress getLocalHost():返回本地计算机的InetAddress。
  2. String getHostName():返回指定InetAddress对象的主机名。
  3. String getHostAddress():返回指定InetAddress对象的主机地址的字符串形式
public class Test02 {
	public static void main(String[] args) throws UnknownHostException {
		//获取一个主机InetAddress对象
		InetAddress in = InetAddress.getLocalHost();
		//使用对象的方法
		System.out.println("获取ip地址:"+in.getHostAddress());
		System.out.println("主机名称"+in.getHostName());
		byte[] buf = in.getAddress();
		System.out.println(Arrays.toString(buf));
		// 获取对象的方法
		InetAddress[] ips = InetAddress.getAllByName("www.baidu.com");
		for(InetAddress ip:ips) {
			System.out.println(ip.getHostAddress()+"=="+ip.getHostName());
		}	
	}
}

Socket 和 ServerSocket 类

1: 客户端称之为socket对象
2:服务器称之为serversocket对象
3:客户端在创建时需要指定ip以及端口
4:服务器创建时需要指定监听端口
5:数据的收发都是通过流完成的 所有数据信息都可以通过socket获取输入/输出流 getInputStream/getOutputStream
6: 对于服务器而言,获取客户端的socket对象 accept方法 (阻塞方法)

使用Socket模拟客户端给服务端发送数据信息
package com.mage.servers;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import javax.sound.sampled.LineListener;

public class ServerB {
	public static void main(String[] args) throws IOException {
		ServerSocket server = new ServerSocket(10001);
		Socket clinet = server.accept();
		InputStream is =clinet.getInputStream();
		byte[] ch = new byte[1024];
	    int len = is.read(ch);
	    System.out.println(new String(ch,0,len));
	    is.close();
	    clinet.close();	
	}
}
package com.mage.servers;
import java.io.IOException;
import java.io.OutputStream;
import java.net.InetAddress;
import java.net.InterfaceAddress;
import java.net.Socket;

public class ClinetB {
	public static void main(String[] args) throws IOException {
		Socket clinet = new Socket("192.168.101.45",10001);
		OutputStream out = clinet.getOutputStream(); 
		out.write("wandaye".getBytes());
		out.close();
		clinet.close();
	}
}

DatagramPacket类、DatagramSocket类

都放在java.net包中

DatagramSocket类用于表示发送和接收数据包的套接字

DatagramPacket类用来表示数据包

客户端

package com.mage.send;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

public class Send {
	public static void main(String[] args) throws IOException {
		//1:创建发送方对象  
		DatagramSocket send = new DatagramSocket(9999);
		//2:构建发送方的数据包对象  buf 发送数据的字节数组  length发送数据的长度  发送到那个ip去 port发送到那个端口
		String str = "老薛已经上线";
		byte[] buf = str.getBytes();
		int len = buf.length;
		InetAddress ip = InetAddress.getLocalHost();
		int port = 10001;//接受方的端口
		DatagramPacket dp = new DatagramPacket(buf, len, ip, port);
		//3:发送信息
		send.send(dp);
		//4;关闭
		send.close();
	}
}

服务器端

package com.mage.rec;
import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.util.Arrays;

public class Rec {
	public static void main(String[] args) throws IOException {
		//1:创建接收方对象
		DatagramSocket rec = new DatagramSocket(10001);
		//2:创建接受数据包对象
		byte[] buf = new byte[1024];
		DatagramPacket dp = new DatagramPacket(buf,buf.length);
		//3:接受发送方发送数据信息
		rec.receive(dp);  //会将数据信息填充在DatagramPacket对象中  阻塞方法
		//4:分析数据
		InetAddress in = dp.getAddress();
		byte[] recBuf = dp.getData();
		int length = dp.getLength();
		int port = dp.getPort();
		String data = new String(recBuf,0,length);
		System.out.println(in.getHostName()+"=="+data+"=="+port);
	}
}

collection类

存储元素的特点 无序 可重复 对于所有的集合框架中的对象 只能存储引用类型

添加元素

add(Object) 添加元素 返回是否添加成功 true/false

addAll(Coll) 添加一个集合

删除元素

clear()清空所有元素

remove()移除一个

removeAll(Coll) 移除交集

retainAll(Coll) 保留交集

修改元素

没有修改元素

查看元素

isEmpty

size

contains

containsAll

package com.mage.collectio.lian;
import java.util.ArrayList;
import java.util.Collection;

public class Test01 {
	public static void main(String[] args) {
		Collection coll = new ArrayList();
		coll.add("玛利亭");
		coll.add(2);
		System.out.println(coll);
		Collection coll2 = new ArrayList();
		coll2.add("肖立亭");
		coll2.add("java");
		
		System.out.println(coll.addAll(coll2));
		System.out.println(coll);
		
		//coll.clear();
		System.out.println(coll.remove("java"));
		System.out.println(coll.removeAll(coll2));
		System.out.println(coll.retainAll(coll2));
		System.out.println(coll);
        
		System.out.println("查看当前集合是否为null:"+coll.isEmpty());
		System.out.println("查看当前集合元素个数:"+coll.size());
		System.out.println("查看当前集合是否包含元素2:"+coll.contains(2));
	}
}
一张图

[外链图片转存失败(img-G1EUUvz9-1564403264774)(D:\360MoveData\Users\万达爷\Desktop\码歌学习\7-29\集合.png)]

迭代器

Iterable 是java.lang包下的接口 实现改接口都能够作为foreach的目标

Iterator 是java.util包下的接口 迭代器 用来迭代当前集合对象的

Iterator 是一个接口 ArrayList中通过内部类完成了对于改接口的实现 获取的其实是实现类对象

URL类

URL 代表一个统一资源定位符,它是指向互联网“资源”的指针。资源可以是简单的文件或目录,也可以是更为复杂

的对象的引用,例如对数据库或搜索引擎的查询。 简单的可以把URL理解为包含:协议、主机名、端口、路径、

查询字符串和参数等对象。每一段可以独立设置。

获取url定义的资源的方法

getProtocol() 获取该URL的协议名。

getHost() 获取该URL的主机名。

getDefaultPort() 获取默认端口

getPort() 获取该URL的端口号,如果没有设置端口,返回-1。

getFile() 获取该URL的文件名。

getRef() 获取该URL在文件中的相对位置。

getQuery() 获取该URL的查询信息。

getPath() 获取该URL的路径

getAuthority() 获取该URL的权限信息

getUserInfo() 获得使用者的信息

getRef() 获得该URL的锚

public static void test1(){
	try {
		//URL url = new URL(spec);
		URL url = new URL("http://baidu.com");
		System.out.println("获取该URL的协议名:" + url.getProtocol());
		System.out.println("获取该URL的主机名:" + url.getHost());
		System.out.println("获取该URL的端口号,如果没有设置端口,返回-1:" + url.getPort());
		System.out.println("获取该URL的文件名:" + url.getFile());
		System.out.println("获取该URL在文件中的相对位置:" + url.getRef());
		System.out.println("获取该URL的查询信息:" + url.getQuery());
		System.out.println("获取该URL的路径:" + url.getPath());
		System.out.println("获取该URL的权限信息:" + url.getAuthority());
		System.out.println("获得使用者的信息:" + url.getUserInfo());
		System.out.println("获得该URL的锚:" + url.getRef());
	} catch (MalformedURLException e) {
		e.printStackTrace();
	}
	
}

ln(“获取该URL的路径:” + url.getPath());
System.out.println(“获取该URL的权限信息:” + url.getAuthority());
System.out.println(“获得使用者的信息:” + url.getUserInfo());
System.out.println(“获得该URL的锚:” + url.getRef());
} catch (MalformedURLException e) {
e.printStackTrace();
}

}


















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值