欢迎光临散文网 会员登陆 & 注册

java编程笔记

2023-06-09 14:39 作者:丶摩羯丶  | 我要投稿

只能看到交互的双方及交互协议 个人认为可以看做人与人之间按照约定方式进行交流


HTTP协议:超文本传输协议(用于实现Web文档的请求和转发)


SMTP协议:简单电子邮件传输协议


FTP协议:文件传输协议


Telnet协议:网络远程访问协议


传输层:提供客户端和服务器之间传输应用层报文的服务 对等体:段或用户数据报 次高抽象层,为交互双方提供信息传输服务 个人认为可以看做为人与人之间交流提供途径,如“写信”


TCP:面向连接的服务 管生又管养


UDP:无连接服务 管生不管养


网络层:按照运输层协议,提供主机之间传递数据报的服务 对等体:数据包 个人认为可以看做实现了信件在省份之间的收发服务


数据链路层 对等体:帧 个人认为可以看做实现了信件在城市之间的收发服务


物理层 对等体:位 个人认为可以看做实现了信件在具体邮局之间的收发服务


TCP/IP的一些基本概念

IP地址:连接到TCP/IP网络上的每台设备的唯一地址标识


端口(Port):每台设备中每个应用程序的唯一标识


套接字(Socket):通信端点,由IP地址+端口号组成


传输控制协议(TCP)

面向连接的保证可靠传输的协议


收发双方的一对socket建立连接后进行双向数据传输、


用户数据报协议(UDP)

无连接传输协议,无序,不一定安全,但简单效率高


将要传输目的地定义成数据报(Datagram) 在数据报中指明要到达的端点(Socket) 发送数据报


域名

服务器地址的别名


Java网络编程

通过流模式实现网络交互,一个接口同时拥有输入流和输出流 一个进程向端口输出流写数据,另一个进程在接口的输入流上读数据即可


Java提供的网络编程类

简记方法:


带URL的为面向应用层的类


带Socket的为面向运输层中TCP协议相关的类


带Datagram的为面向运输层中UDP协议相关的类


带Exception的为各种异常


领域类名面向应用层的类URL URLConnection面向运输层中与TCP协议相关的类Socket ServerSocket面向运输层中与UDP协议相关的类DatagramPakcet DatagramSocket MulticastSocket指向网络层的类InetAddress可能产生的异常BindException ConnectException MalformedURLException NoRouteToHostException ProtocolException SocketException UnknownHostException UnknownServiceException


InetAddress的使用

Java的IP地址封装类


无构造函数,直接用静态方法获取InetAddress实例


public static InetAddress getByName(String host);

public static InetAddress getLocalHost();

public static InetAddress[] getAllByName(String host);

//host可以是机器名、IP地址或DSN域名

//潜在异常:UnknownHostException


InetAddress的主要方法

public byte[] getAddress()

//获取本对象的IP地址并存放在字节数组中

public String getHostAddress()

//获取本对象的IP地址“%d.%d.%d.%d”

public String getHostName()

//获取本对象的机器名


统一资源定位器(URL)

Internet上资源地址的统一表达格式


语法格式:<protocol>:// <host : port>/dir/filename <要获取资源的传输协议> :// <主机:端口号>/目录/文件名


//URL构造方法

public URL (String spec);

//spec:URL地址

public URL (URL context String spec);

//context:现有URL对象

//基于一个URL对象访问同一主机上不同路径的文件

public URL (String protocol,String host,String file);

public URL (String protocol,String host,int port,String file)

//协议、机器名称、端口号、文件名//URL常用方法

public String getProtocol;//获取URL协议名

public String getHost;//获取URL主机名

public int getPort;//获取URL端口号

public String getFile;//获取URL文件名

public String getRef;//获取URL相对位置

public String getPath;//获取URL的路径

public String getAuthority;//获取URL的权限信息

public String getUserInfo;//获取使用者信息


读入URL数据

openStream():读取一个URL对象指定的资源 与指定URL建立连接并返回一个InputStream对象


Socket接口

分为服务器端(ServerSocket)和客户端(Socket)


通信步骤

服务器端生成ServerSocket对象,用accept()等待客户端的连接请求


客户端生成Socket对象并发出连接请求


服务器端通过accept()方法接收到客户端的请求后,开辟连接用的接口,并生成所需I/O数据流


服务器端和客户端通过由客户端提供的Socket中的InputStream和OutputStream进行通信


通信结束后,服务器端关闭通过accept()得到的Socket接口,客户端也要关闭Socket接口


客户端Socket类

//Socket构造方法

public Socket(String address,int port);

public Socket(InetAddress address,int port)

public Socket(String host,int port,InetAddress localAddress,int localPort);

public Socket(InetAddress address,int port,InetAddress localAddress,int localPort);


Socket类主要方法


方法名功能void close()关闭Socket连接InetAddress getInetAddress()获取当前连接的远程主机的Internet地址InetAddress getLocalAddress()获取本地主机的Internet地址InputStream getInputStream()获取Socket输入流OutputStream getOutputStream()获取Socket输出流int getPort()获取当前连接的远程主机的端口号int getLocalPort()获取本地主机的端口号void shutdownInput()关闭输入流void shutdownOutput()关闭输出流


服务器ServerSocket类

ServerSocket类用于监听来自指定端口的连接


在为新的连接创建一个Socket对象以后,客户端便可与服务器端进行通信


//ServerSocket类构造方法

public ServerSocket(int port);

public ServerSocket(int port,int backlog);

public ServerSocket(int port,int backlog,InetAddress bindAddress);

//port:端口号

//backlog:服务器忙时保持连接请求的等待客户量

//bindAddress:指定的服务器IP地址


ServerSocket类主要方法


方法名功能Socket accept()接收该连接并返回该连接的Socket对象void close()关闭此服务器的SocketInetAddress getInetAddress()获取服务器Socket绑定的地址int getLocalPort()获取服务器Socket所侦听的端口号int getSoTimeout()获取连接的超时数void setSoTimeout(int timeout)设置ServerSocket的accept()方法等待用户连接的超时时间 timeout默认为0,表示永远不超时,直接进入阻塞状态


 

 异常的处理方式:抛出异常后,首先使用new在堆上创建异常对象。然后,当前的执行路径被终止,从当前环境跳到对异常对象的引用。寻找下一个恰当的位置(异常处理程序)继续执行,它的任务是从错误状态种恢复,以使程序能要么换一种方式运行,要么继续运行下去。


异常抛出:


throw:使用它来抛出异常,可以把它类比return操作符(注意是类比,因为异常的处理位置可能会跨越方法调用栈的许多层级,而不是简单的跳出该方法),它能抛出异常,并且跳出当前作用域。它能抛出任意类型的Throwable对象(通常异常的唯一信息来自于它的名字)。


异常捕获:


异常抛出了就得处理嘛,有两种方式:


try-catch-finally语句(只有在你知道如何处理的情况下才捕获异常。):


catch语句只有匹配的异常类型才会执行,try-catch是 必须的结构。


而finally语句一般在需要手动释放资源时是必须的,它总会被执行(无论break、continue还是return一样会执行)。所以注意不要因为使用了finally而跳过了某些异常,比如finally中抛出异常,或者直接return跳出当前层次。




throws:声明异常,谁调用谁处理。


终止与恢复:


·.终止:在这种模型中,将假设错误非常严重,以至于程序无法返回到异常发生的地方继续执行。一旦异常被抛出,就表明错误已无法挽回,也不能回来继续执行。


·.恢复:在这种模型中,将假设错误非常严重,以至于程序无法返回到异常发生的地方继续执行。一旦异常被抛出,就表明错误已无法挽回,也不能回来继续执行。(可以不用抛出异常,调用方法来修正该错误,或者把try块放在while循环,这样就不断地进入 try 块,直到得到满意的结果)


自定义异常类型:继承Exception就行了(如果想要写入System.err 而将错误发送给标准错误流,可以写一个String 的构造器,并赋值给父类)。注意命名规范。


java编程笔记的评论 (共 条)

分享到微博请遵守国家法律