SocketFactory是一个抽象类(抽象类不能被实例化,但可以有构造函数)。

  描述:This class creates sockets./此类用于创建sockets

public abstract class SocketFactory {private static SocketFactory theFactory;  //返回环境默认的socket工厂的副本。public static SocketFactory getDefault() {synchronized (SocketFactory.class) {if (theFactory == null) {theFactory = new DefaultSocketFactory();}}return theFactory;}  //创建一个无连接的socket(抛出SocketException("Unconnected sockets not implemented")异常)public Socket createSocket() throws IOException {UnsupportedOperationException localUnsupportedOperationException = new UnsupportedOperationException();SocketException localSocketException = new SocketException("Unconnected sockets not implemented");localSocketException.initCause(localUnsupportedOperationException);throw localSocketException;}//创建一个套接字并将其连接到指定地址的指定端口号。public abstract Socket createSocket(String host, int port) throws IOException, UnknownHostException; //创建套接字并将其连接到指定远程主机的指定远程端口号。public abstract Socket createSocket(String host, int port, InetAddress localHost, int localPort)throws IOException, UnknownHostException;//创建一个套接字并将其连接到指定地址的指定端口号。public abstract Socket createSocket(InetAddress address, int port) throws IOException;//创建套接字并将其连接到指定远程地址上的指定远程端口。public abstract Socket createSocket(InetAddress address, int port, InetAddress localAdress,int localPort) throws IOException;
}

  DefaultSocketFactory是SocketFactory的子类。socket创建的默认工厂类

class DefaultSocketFactory extends SocketFactory {public Socket createSocket() {return new Socket();}public Socket createSocket(String paramString, int paramInt) throws IOException, UnknownHostException {return new Socket(paramString, paramInt);}public Socket createSocket(InetAddress paramInetAddress, int paramInt) throws IOException {return new Socket(paramInetAddress, paramInt);}public Socket createSocket(String paramString, int paramInt1, InetAddress paramInetAddress, int paramInt2)throws IOException, UnknownHostException {return new Socket(paramString, paramInt1, paramInetAddress, paramInt2);}public Socket createSocket(InetAddress paramInetAddress1, int paramInt1, InetAddress paramInetAddress2,int paramInt2) throws IOException {return new Socket(paramInetAddress1, paramInt1, paramInetAddress2, paramInt2);}
}

  ServerSocketFactory是一个抽象类(抽象类不能被实例化,但可以有构造函数)。

  描述:This class creates server sockets./此类用于创建服务器套间字

 

public abstract class ServerSocketFactory {private static ServerSocketFactory theFactory;//返回环境默认的socket工厂副本
    public static ServerSocketFactory getDefault() {synchronized (ServerSocketFactory.class) {if (theFactory == null) {theFactory = new DefaultServerSocketFactory();}}return theFactory;}//返回一个未绑定的服务器套间字
    public ServerSocket createServerSocket() throws IOException {throw new SocketException("Unbound server sockets not implemented");}//返回一个绑定到指定端口的服务器套间字
    public abstract ServerSocket createServerSocket(int port) throws IOException;//返回一个绑定到指定端口的服务器套间字,并指定backlog参数
    public abstract ServerSocket createServerSocket(int port, int backlog) throws IOException;//返回一个绑定到指定端口的服务间套间字,并指定backlog和ip地址
    public abstract ServerSocket createServerSocket(int port, int backlog, InetAddress adress)throws IOException;
}                

  DefaultServerSocketFactory是ServerSocketFactory的子类。ServerSocket创建的默认工厂类。

class DefaultServerSocketFactory extends ServerSocketFactory {public ServerSocket createServerSocket() throws IOException {return new ServerSocket();}public ServerSocket createServerSocket(int paramInt) throws IOException {return new ServerSocket(paramInt);}public ServerSocket createServerSocket(int paramInt1, int paramInt2) throws IOException {return new ServerSocket(paramInt1, paramInt2);}public ServerSocket createServerSocket(int paramInt1, int paramInt2, InetAddress paramInetAddress)throws IOException {return new ServerSocket(paramInt1, paramInt2, paramInetAddress);}
}

  简单测试

class TestFactory extends SocketFactory {@Overridepublic Socket createSocket(String paramString, int paramInt) throws IOException, UnknownHostException {return null;}@Overridepublic Socket createSocket(String paramString, int paramInt1, InetAddress paramInetAddress, int paramInt2)throws IOException, UnknownHostException {return null;}@Overridepublic Socket createSocket(InetAddress paramInetAddress, int paramInt) throws IOException {return null;}@Overridepublic Socket createSocket(InetAddress paramInetAddress1, int paramInt1, InetAddress paramInetAddress2,int paramInt2) throws IOException {return null;}public static void main(String[] args) throws UnknownHostException, IOException {TestFactory factory = new TestFactory();Socket socket1 = factory.createSocket("host", 1);System.out.println(socket1 == null);SocketFactory factory1 =  SocketFactory.getDefault();Socket socket2 = factory.createSocket("host", 1);System.out.println(socket2 == null);}
}

返回结果:

true

false

 

转载于:https://www.cnblogs.com/maxudong/p/8385018.html

SocketFactory、DefaultSocketFactory、ServerSocketFactory、DefaultServerSocketFactory相关推荐

  1. etcd 笔记(05)— etcd 代码结构、各模块功能、整体架构、各模块之间的交互、请求和应答流程

    1. etcd 项目结构和功能 etcd 项目代码的目录结构如下: $ tree ├── auth ├── build ├── client ├── clientv3 ├── contrib ├── ...

  2. VS Code 配置调试参数、launch.json 配置文件属性、task.json 变量替换、自动保存并格式化、空格和制表符、函数调用关系、文件搜索和全局搜索、

    1. 生成配置参数 对于大多数的调试都需要在当前项目目录下创建一个 lanch.json 文件,位置是在当前项目目录下生成一个 .vscode 的隐藏文件夹,在里面放置一些配置内容,比如:settin ...

  3. 计图(Jittor) 1.1版本:新增骨干网络、JIT功能升级、支持多卡训练

    计图(Jittor) 1.1版本:新增骨干网络.JIT功能升级.支持多卡训练 深度学习框架-计图(Jittor),Jittor的新版本V1.1上线了.主要变化包括: • 增加了大量骨干网络的支持,增强 ...

  4. 对端边缘云网络计算模式:透明计算、移动边缘计算、雾计算和Cloudlet

    对端边缘云网络计算模式:透明计算.移动边缘计算.雾计算和Cloudlet 概要 将数据发送到云端进行分析是过去几十年的一个突出趋势,推动了云计算成为主流计算范式.然而,物联网时代设备数量和数据流量的急 ...

  5. Shiro01 功能点框图、架构图、身份认证逻辑、身份认证代码实现

    基本功能点 功能点框图 功能点说明 1.Authentication:身份认证/登录,验证用户是不是拥有相应的身份: 2.Authorization:授权,即权限验证,验证某个已认证的用户是否拥有某个 ...

  6. PyTorch 笔记(16)— torch.nn.Sequential、torch.nn.Linear、torch.nn.RelU

    PyTorch 中的 torch.nn 包提供了很多与实现神经网络中的具体功能相关的类,这些类涵盖了深度神经网络模型在搭建和参数优化过程中的常用内容,比如神经网络中的卷积层.池化层.全连接层这类层次构 ...

  7. 机器学习入门(15)— 全连接层与卷积层的区别、卷积神经网络结构、卷积运算、填充、卷积步幅、三维数据卷积、多维卷积核运算以及批处理

    卷积神经网络(Convolutional Neural Network,CNN)CNN 被用于图像识别.语音识别等各种场合,在图像识别的比赛中,基于深度学习的方法几乎都以 CNN 为基础. 1. 全连 ...

  8. Go 学习笔记(33)— Go 自定义类型 type(自定义结构体、结构体初始化、结构体内嵌、自定义接口)

    1. 自定义类型格式 用户自定义类型使用关键字 type ,其语法格式是: type newType oldType oldType 可以是自定义类型.预声明类型.未命名类型中的任意一种. newTy ...

  9. Go 学习笔记(32)— 类型系统(命名类型、未命名类型、底层类型、类型强制转换、类型别名和新声明类型)

    1. 命名类型和未命名类型 1.1 命名类型 类型可以通过标识符来表示,这种类型称为命名类型( Named Type ). Go 语言的基本类型中有 20 个预声明简单类型都是命名类型, Go 语言还 ...

  10. Go 学习笔记(22)— 并发(01)[进程、线程、协程、并发和并行、goroutine 启动、goroutine 特点,runtime 包函数]

    Go 语言通过编译器运行时( runtime ),从语言上支持了并发的特性. 虽然 Go 程序编译后生成的是本地可执行代码,但是这些可执行代码必须运行在Go 语言的运行时(Runtime )中.Go ...

最新文章

  1. php扩展的应用,《PHP扩展开发及内核应用》
  2. 【Android 异步操作】手写 Handler ( 总结 | Message | MessageQueue | Looper | Handler ) ★
  3. PTA 09-排序3 Insertion or Heap Sort (25分)
  4. 【Android个人理解(八)】跨应用调用不同组件的方法
  5. 论:CMMI项目策划方法(PP)
  6. 27代理模式(Proxy Pattern)
  7. stm32 I2C架构
  8. 参考文献的类型及标识
  9. 学习笔记——web安全深度剖析
  10. JQGrid 嵌套字表, json数据
  11. leetcode(105)从前序遍历和中序遍历构建二叉树
  12. 【SpringBoot_ANNOTATIONS】组件注册 01 @Configuration @Bean
  13. 软件体系结构复习指南
  14. 金融期货具体的开户条件
  15. 无法打开包括文件:“afxcontrolbars.h”: 的解决方案
  16. 三星6818真八核嵌入式开发板添加宏定义方法
  17. matlab 虚数实部,为什么圆的面积等于4圆周率R的平方,体积等于43圆周率R的立方?-matlab虚数-数学-厍抛粕同学...
  18. Vue 作者尤雨溪,引路中国程序开发
  19. ppt太大了怎么改小一些?
  20. 【160】VS2022调试通过海康摄像头烟火识别SDK

热门文章

  1. Javafx 报错Exception in Application start method java.lang.reflect.InvocationTargetException
  2. 宇宙是什么,有尽头吗,为什么?
  3. 山东省德州市有哪些明星?
  4. 微商团队长的五条管理心法
  5. 月薪2万是一种怎样的人生体验?
  6. 一款无需写任何代码即可一键生成前后端代码的开源工具
  7. 计算机网络————P2 标准化工作及相关组织
  8. 删除排除链表中的重复元素
  9. power bi示例文件_Power BI桌面问答数据交互示例
  10. Always On可用性组中SQL Server统计信息