网络编程_反射_数据库

1. Properties:集合属性列表

Properties类表示一组持久的属性。 ----称为"属性集合列表"
Properties可以保存到流中或从流中加载。
属性列表中的每个键及其对应的值都是一个字符串。
后缀名.properties的配置文件(属性配置文件)
(必须在src下面创建,类路径下)

传统的配置:xx.txt文件(普通文本文件)

 java.util.Properties没有泛型
 继承Hashtable<K,V>,最终实现接口Map<K,V>
   构造方法:Properties() :创建空的属性列表
     能够使用Map的功能
     put(K k,V v):添加键值对
     Set <K> keySet():获取所有的键的集合
     V get(K k) :通过键获取值
public class Test {
   

    public static void main(String[] args) throws Exception {
   
        //读取当前src下面的配置文件 class.properties---->配置文件内容加载到属性集合列表中
        //要通过类的字节码文件获取---获取类加载器
        //1)获取当前类的字节码文件对象
        Class c = Test.class ;
        //2)通过当前类的字节码文件对象获取类加载器
        //public ClassLoader getClassLoader()
        ClassLoader classLoader = c.getClassLoader();
        //3) public static InputStream getSystemResourceAsStream(String name) //参数:配置文件名称
        //通过类加载器获取当前配置文件所在的资源的字节输入流对象
        InputStream inputStream = classLoader.getResourceAsStream("class.properties");

        //4)创建空的属性集合列表
        Properties prop = new Properties( );
        System.out.println(prop);
        //load(InputStream in)
        prop.load(inputStream);
        //获取key和value
        Set<String> set = prop.stringPropertyNames() ;
        for(String key:set){
   
            Object value = prop.get(key) ;
            System.out.println(key+"="+value);
        }
        System.out.println(prop);

    }
}

2. 网络编程

网络—>基于一种协议,能够实现计算机和计算机之间的通信
协议—>依赖于"网络模型"

两种协议
UDP传输协议
TCP传输协议

网络编程的三要素

  1. ip地址
    A类
    前面一个是网络号段,后面三个是主机号段
    B类
    前面两个是网络号段,后面两个是主机号段
    C类
    一般说的是私人ip地址
    前面三个号段为网络号段,后面一个是主机号段
  2. 端口
    0-65535
    0-1024:属于保留端口,不要指定这些范围内的端口
  3. 协议
    Udp传输协议
    1)不需要建立连接通道—>不同步,安全性低,效率高
    2)属于一种不可靠连接
    3)传输文件大小有限制,不超过64kb(数据包DategramPackage 的方式)
    TCP传输协议
    1)需要建立通道—>同步,安全性高
    2)属于可靠连接
    3)传输的大小没有限制,相对Udp来说优秀一些

2.1 网络编程

网络编程也叫Socker编程
无论UDP还是TCP最终都是要通过数据传输(流),两端都需要socket(流的"套接字")对象
socket编程特点:
1)两端都需要有Socket对象(发送端和接收端)
2)发送端(客户端)需要有ip地址以及绑定端口
3)接收端(服务器端)需要绑定发送端的端口

2.2 java.net.InetAddress:代表互联网ip地址对象

Jdk提供的api文档有这样一个类:
java.net.InetAddress 互联网协议的Ip地址的表示,不是String是InetAddress类型

一个类如果没有构造方法,如何创建当前类实例呢?
这个类一定要静态的公共访问法---->返回值类型是自己类本身,方法的底层一定有该类对象的
常用的功能:

 public static InetAddress getByName(String host)throws UnknownHostException

通过主机名称获取ip地址对象,参数可以指定你自己电脑上的ip地址字符串(ip4地址)或者是计算机的主机名称

  public String getHostAddress():获取ip地址字符串形式
  public String getHostName():获取当前ip地址对象的主机名
public class InetAddressDemo{
   
	public static void main(String[] args) {
   
		//public static InetAddress getByName(String host)throws UnknownHostException
		//通过主机名获取ip地址对象.参数可以是自己电脑的主机名或者ip地址字符串(ip4地址)
		InetAddress inetAddress = InetAddress.getByName("主机名称或者IP地址");

		//public String getHostAddress():获取ip地址字符串形式
  		//public String getHostName():获取当前ip地址对象的主机名
  		System.out.println(inetAddress.getHostAddress());
  		System.out.println(inetAddress.getHostName());
	}
}

2.3 UDP发送端和接收端代码实现

/*
Udp协议 ---->数据包的形式发送        (发送和接收端的数据传输)
   发送端的代码步骤
  1)创建发送端的Socket对象
  2)创建数据报包对象
  3)使用发送的端的socket对象调用发送方法发送数据报包
  4)释放资源
 */
public class UDPSend{
   
	public static void main(String args[]) throws Exception {
   
		//创建发送端的Socket对象
		//DatagramSocket 用于发送和接收数据报数据包的套接字
        //public DatagramSocket()throws SocketException
        DatagramSocket ds = new DategramSocket();
        //创建数据报包对象
        //DatagramPacket:数据报包,用于udp里面数据传输
        //public DatagramPacket(byte[] buf,  用于发送的数据---字符串---转换成字节数组
        //int length,  数据长度
        //InetAddress address,  ip地址对象
        //int port) 端口号
        DatagramPacket dp = new DatagramPacket(
        	"hello,UDP我来了".getBytes(),
            "hello,UDP我来了".getBytes().length,
            InetAddress.getByName("192.168.x.x"),
            11111);        
		//3)使用发送的端的socket对象调用发送方法发送数据报包
        //public void send(DatagramPacket p) throws IOException:发送端的socket对象发送数据报包
        ds.send(dp);
        //4)释放资源
        ds.close();
	}
}
/*
UDP接收端代码实现
 
  1)创建接收端的Socket对象
  2)创建一个接收容器(数据报包DatagramPacket)(字节数组长度1024个长度或者它的整数倍),自定义字节缓冲区,将数据报包放进去
  3)接收端的socket对象,接收数据报包
  4)解析接收容器中的真实的缓冲区的字节数组以及实际长度---->转换成字符串(发送端实际发来的内容)
  5)展示发送的ip地址以及发送的内容
*/
public class UDPReceiver{
   
	public static void main(String[] args) throws Exception {
   
		//1)创建接收端的Socket对象,指定绑定的端口号
        //public DatagramSocket(int port) throws SocketException
        DatagramSocket ds = new DatagramSocket(11111);
        //2)创建一个接收容器(数据报包DatagramPacket)(字节数组长度1024个长度或者它的整数倍)
        //自定义字节缓冲区,将数据报包放进去
        //public DatagramPacket(byte[] buf,  参数1:用于保存传入数据报的缓冲区。
        //int length) 参数2:要读取的字节数。
        byte[] bytes = new byte[1024] ;
        int length = bytes.length ;
        DatagramPacket dp = new DatagramPacket(bytes,length);
        //3)接收端的socket对象,接收数据报包
        //底层会将的发送端的内容填充到这个数据报包的缓冲区中
        //public void receive(DatagramPacket p) throws IOException
        ds.receive(dp);
        //4)填充进去之后,从数据报包的缓冲区中解析实际的内容
        //public byte[] getData():获取缓冲区中真实的字节数组
        //public int getLength():返回接收的真实字节数 的长度
        byte[] bytes2 = dp.getData();
        int length2 = dp.getLength();
        //转换成字符串
        String receiverStr = new String(bytes2,0,length2);
        //5)展示ip地址(发送端的)以及现在接收的内容
        //数据报包---public InetAddress getAddress()  获取ip地址对象
        //InetAddress  ---->String getHostAddress() ip地址字符串
        String ip = dp.getAddress().getHostAddress();
        System.out.println("接收到ip为" + ip + "发来的一条消息,内容为:" + receiverStr);

        //接收端释放资源
        ds.close(); //在真实场景中,接收端不关闭的
	}
}

2.4 TCP客户端和服务器端代码实现

/*
TCP协议方式,  客户端和服务器端的传输
 
  客户端要发送的数据的步骤
       1)创建TCP协议 客户端的Socket对象,指定ip地址以及端口
       2)从客户端所在的通道获取的字节数出流对象
       3)写数据过去
       4)关闭客户端资源
*/

public class TcpClient {
   
    public static 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值