Java Socket编程总结

一、网络API

InetAddress      用于标识网络上的硬件资源,主要是IP地址

URL          统一资源定位符,通过URL可以直接读取或写入网络上的数据
Sockets      使用TCP协议实现的网络通信Socket相关的类
Datagram     使用UDP协议,将数据保存在用户数据报中,通过网络进行通信。

 

二、地址

A、InetAddress           ip地址

(1)静态方法

  • getLocalHost()   InetAddress 
  • getByName(String host)       InetAddress
  • getAllByName(String host)   InetAddress[]
  • getByAddress(byte[] addr)   InetAddress
  • getByAddress(String host, byte[] addr)    InetAddress 

(2)成员方法

  • getAddress()    byte[] 
  • getCanonicalHostName()  String
  • getHostAddress()   String
  • getHostName()  String 
  • isAnyLocalAddress()  boolean
  • isMulticastAddress()   boolean 
  • isReachable(int timeout)   boolean 

 

B、InetSocketAddress         socket地址

(1)构造方法

  • InetSocketAddress(InetAddress addr, int port)     根据 IP 地址和端口号创建套接字地址。
  • InetSocketAddress(int port)              创建套接字地址,其中 IP 地址为通配符地址,端口号为指定值。
  • InetSocketAddress(String hostname, int port)      根据主机名和端口号创建套接字地址。

(2)成员方法

  • getAddress()  InetAddress       获取 InetAddress。
  • getHostName()   String            获取 hostname。
  • getPort()  int                            获取端口号。

(4)静态方法

  • createUnresolved(String host, int port)   InetSocketAddress       根据主机名和端口号创建未解析的套接字地址。

 

三、Socket

(1)构造方法

  • Socket()                                                                       通过系统默认类型的 SocketImpl 创建未连接套接字
  • Socket(InetAddress address, int port)                                                            创建一个流套接字并将其连接到指定 IP 地址的指定端口号。
  • Socket(InetAddress address, int port, InetAddress localAddr, int localPort)        创建一个套接字并将其连接到指定远程地址上的指定远程端口。
  • Socket(Proxy proxy)                                                                                            创建一个未连接的套接字并指定代理类型(如果有),该代理不管其他设置如何都应被使用。
  • Socket(String host, int port)                                                                                 创建一个流套接字并将其连接到指定主机上的指定端口号。
  • Socket(String host, int port, InetAddress localAddr, int localPort)                        创建一个套接字并将其连接到指定远程主机上的指定远程端口。

(2)成员方法

1)关联地址

  • bind(SocketAddress bindpoint)  void           将套接字绑定到本地地址。
  • connect(SocketAddress endpoint)   void        将此套接字连接到服务器。
  • connect(SocketAddress endpoint, int timeout)    void         将此套接字连接到服务器,并指定一个超时值。
  • isBound()  boolean           返回套接字的绑定状态。 
  • isConnected()  boolean    返回套接字的连接状态。

2)获取IP地址

  • getInetAddress()   InetAddress          返回套接字连接的地址。 
  • getLocalAddress()   InetAddress        获取套接字绑定的本地地址。
  • getPort()            int    返回此套接字连接到的远程端口。
  • getLocalPort()      int 返回此套接字绑定到的本地端口。
  • getLocalSocketAddress()  SocketAddress 返回此套接字绑定的端点的地址,如果尚未绑定则返回 null。 
  • getRemoteSocketAddress()   SocketAddress 返回此套接字连接的端点的地址,如果未连接则返回 null。

3)获取数据

  • getInputStream()   InputStream           返回此套接字的输入流。 
  • getOutputStream()   OutputStream     返回此套接字的输出流。
  • getChannel()   SocketChannel            返回与此数据报套接字关联的唯一 SocketChannel 对象(如果有)。

4)设置缓冲区

  • setReceiveBufferSize(int size) void            将此 Socket 的 SO_RCVBUF 选项设置为指定的值。 
  • setSendBufferSize(int size) void         将此 Socket 的 SO_SNDBUF 选项设置为指定的值。

5)重用端口

  • setReuseAddress(boolean on) void      启用/禁用 SO_REUSEADDR 套接字选项。 
  • getReuseAddress()   boolean               测试是否启用 SO_REUSEADDR。

6)关闭

  • close()  void                    关闭此套接字。
  • isClosed()  boolean       返回套接字的关闭状态。

 

四、ServerSocket

(1)构造方法

  • ServerSocket()                                                                       创建非绑定服务器套接字。
  • ServerSocket(int port)                                                            创建绑定到特定端口的服务器套接字。
  • ServerSocket(int port, int backlog)                                         利用指定的 backlog 创建服务器套接字并将其绑定到指定的本地端口号。
  • ServerSocket(int port, int backlog, InetAddress bindAddr)     使用指定的端口、侦听 backlog (最大的等待队列)和要绑定到的本地 IP 地址创建服务器。

(2)绑定地址

  • bind(SocketAddress endpoint)   void            将 ServerSocket 绑定到特定地址(IP 地址和端口号)。
  • bind(SocketAddress endpoint, int backlog)  void    将 ServerSocket 绑定到特定地址(IP 地址和端口号)。
  • isBound()  boolean                                                 返回套接字的绑定状态。 

 (3)获取地址

  • getInetAddress()   InetAddress            返回此服务器套接字的本地地址。
  • getLocalPort()   int                返回此套接字在其上侦听的端口。
  • getLocalSocketAddress()  SocketAddress     返回此套接字绑定的端点的地址,如果尚未绑定则返回 null。

(4)设置缓冲区

  • setReceiveBufferSize(int size) void            将此 Socket 的 SO_RCVBUF 选项设置为指定的值。 
  • setSendBufferSize(int size) void         将此 Socket 的 SO_SNDBUF 选项设置为指定的值。

(5)重用端口

  • setReuseAddress(boolean on) void      启用/禁用 SO_REUSEADDR 套接字选项。 
  • getReuseAddress()   boolean               测试是否启用 SO_REUSEADDR。

(6)接受连接

  • accept()   Socket     侦听并接受到此套接字的连接。

(7)关闭

  • close()  void                    关闭此套接字。
  • isClosed()  boolean       返回套接字的关闭状态。

 

五、DatagramSocket

(1)构造方法

  • DatagramSocket()                  构造数据报套接字并将其绑定到本地主机上任何可用的端口。
  • DatagramSocket(int port)            创建数据报套接字并将其绑定到本地主机上的指定端口。
  • DatagramSocket(int port, InetAddress laddr)  创建数据报套接字,将其绑定到指定的本地地址。
  • DatagramSocket(SocketAddress bindaddr)    创建数据报套接字,将其绑定到指定的本地套接字地址。

(2)绑定地址

  • bind(SocketAddress addr)  void            将此 DatagramSocket 绑定到特定的地址和端口。
  • connect(InetAddress address, int port) void   将套接字连接到此套接字的远程地址。
  • connect(SocketAddress addr)  void      将此套接字连接到远程套接字地址(IP 地址 + 端口号)。
  • disconnect()  void              断开套接字的连接。
  • isBound()  boolean                     返回套接字的绑定状态。 
  • isConnected()  boolean              返回套接字的连接状态。

(3)获取IP地址

  • getInetAddress()   InetAddress          返回套接字连接的地址。 
  • getLocalAddress()   InetAddress        获取套接字绑定的本地地址。
  • getPort()            int                                  返回此套接字连接到的远程端口。
  • getLocalPort()      int                                     返回此套接字绑定到的本地端口。
  • getLocalSocketAddress()  SocketAddress          返回此套接字绑定的端点的地址,如果尚未绑定则返回 null。 
  • getRemoteSocketAddress()   SocketAddress     返回此套接字连接的端点的地址,如果未连接则返回 null。

(4)设置缓冲区

  • setReceiveBufferSize(int size) void            将此 Socket 的 SO_RCVBUF 选项设置为指定的值。 
  • setSendBufferSize(int size) void         将此 Socket 的 SO_SNDBUF 选项设置为指定的值。

(5)重用端口

  • setReuseAddress(boolean on) void      启用/禁用 SO_REUSEADDR 套接字选项。 
  • getReuseAddress()   boolean               测试是否启用 SO_REUSEADDR。

(6)发送接收数据

  • receive(DatagramPacket p)   void       从此套接字接收数据报包。
  • send(DatagramPacket p)    void    从此套接字发送数据报包。 
  • getChannel()  DatagramChannel       返回与此数据报套接字关联的唯一 DatagramChannel 对象(如果有)。

(7)关闭

  • close()  void                    关闭此套接字。
  • isClosed()  boolean       返回套接字的关闭状态。

 

六、DatagramPacket

(1)构造方法

  • DatagramPacket(byte[] buf, int length)     构造 DatagramPacket,用来接收长度为 length 的数据包。
  • DatagramPacket(byte[] buf, int length, InetAddress address, int port)         构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
  • DatagramPacket(byte[] buf, int offset, int length)          构造 DatagramPacket,用来接收长度为 length 的包,在缓冲区中指定了偏移量。
  • DatagramPacket(byte[] buf, int offset, int length, InetAddress address, int port)           构造数据报包,用来将长度为 length 偏移量为 offset 的包发送到指定主机上的指定端口号。
  • DatagramPacket(byte[] buf, int offset, int length, SocketAddress address)        构造数据报包,用来将长度为 length 偏移量为 offset 的包发送到指定主机上的指定端口号。
  • DatagramPacket(byte[] buf, int length, SocketAddress address)           构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。

(2)地址

  • getAddress() InetAddress       返回某台机器的 IP 地址,此数据报将要发往该机器或者是从该机器接收到的。
  • getPort()  int             返回某台远程主机的端口号,此数据报将要发往该主机或者是从该主机接收到的。
  • getSocketAddress() SocketAddress    获取要将此包发送到的或发出此数据报的远程主机的 SocketAddress(通常为 IP 地址 + 端口号)。
  • setAddress(InetAddress iaddr) void    设置要将此数据报发往的那台机器的 IP 地址。
  • setPort(int iport)  void           设置要将此数据报发往的远程主机上的端口号。
  • setSocketAddress(SocketAddress address)  void   设置要将此数据报发往的远程主机的 SocketAddress(通常为 IP 地址 + 端口号)。

(3)数据

  • getData()  byte[]                                                  返回数据缓冲区。
  • getLength()  int                                                   返回将要发送或接收到的数据的长度。
  • getOffset()  int                                                     返回将要发送或接收到的数据的偏移量。
  • setAddress(InetAddress iaddr) void                        设置要将此数据报发往的那台机器的 IP 地址。
  • setData(byte[] buf)  void                                       为此包设置数据缓冲区。
  • setData(byte[] buf, int offset, int length)  void          为此包设置数据缓冲区。
  • setLength(int length)   void                                     为此包设置长度。

 

七、URL

(1)构造方法

  • URL(String spec)      根据 String 表示形式创建 URL 对象。
  • URL(String protocol, String host, int port, String file)    根据指定 protocol、host、port 号和 file 创建 URL 对象。
  • URL(String protocol, String host, int port, String file, URLStreamHandler handler)      根据指定的 protocol、host、port 号、file 和 handler 创建 URL 对象。
  • URL(String protocol, String host, String file)     根据指定的 protocol 名称、host 名称和 file 名称创建 URL。
  • URL(URL context, String spec)     通过在指定的上下文中对给定的 spec 进行解析创建 URL。
  • URL(URL context, String spec, URLStreamHandler handler)    通过在指定的上下文中用指定的处理程序对给定的 spec 进行解析来创建 URL。

 

(2)URL信息

  • getDefaultPort()  int    获取与此 URL 关联协议的默认端口号。
  • getFile()  String        获取此 URL 的文件名。
  • getHost() String        获取此 URL 的主机名(如果适用)。
  • getPath()  String       获取此 URL 的路径部分。
  • getPort()  int        获取此 URL 的端口号。
  • getProtocol() String     获取此 URL 的协议名称。
  • getQuery() String     获取此 URL 的查询部分。
  • getRef()  String      获取此 URL 的锚点(也称为“引用”)。

(3)连接

  • openConnection()  URLConnection    返回一个 URLConnection 对象,它表示到 URL 所引用的远程对象的连接。
  • openConnection(Proxy proxy)  URLConnection      与 openConnection() 类似,所不同是连接通过指定的代理建立;不支持代理方式的协议处理程序将忽略该代理参数并建立正常的连接。
  • openStream()   InputStream      打开到此 URL 的连接并返回一个用于从该连接读入的 InputStream。

(4)文本内容

  • getContent()  Object        获取此 URL 的内容。 
  • getContent(Class[] classes) Object     获取此 URL 的内容。 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331364.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java插入排序_Java程序要插入排序

java插入排序Java程序插入示例的排序。 显示了示例仿真以及时间复杂度。 插入排序是一种简单的排序算法,可以一次构建一个最终的排序数组(或列表)。 它比冒泡排序有效得多,并且在大型列表上的效率比快速排序 ,堆排序或…

jvm(2)-JVM内存的设置(解决eclipse下out of memory问题)

【0】README 0.1)本文转自: http://blog.csdn.net/sjf0115/article/details/8889201 一、JVM内存的设置的原理 默认的java虚拟机的大小比较小,在对大数据进行处理时java就会报错:java.lang.OutOfMemoryError。 设置jvm内存的方…

Java Servlet总结

一、Servlet简介 Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实…

java oca_OCA第1部分中的Java难题

java oca我在业余时间正在阅读Mala Gupta的Oracle认证Java SE程序员助理书,我对所学到的一些新知识感到惊讶。 有时候他们真的没有道理,有时候他们说得通,但真的让人惊讶。 因此,在本系列文章中,我想将它们共享为“ Ja…

jvm(1)-走进java

【0】README0.1)本文转自 深入理解 jvm,旨在了解 java 体系结构;【1】java技术体系1) Sun 官方所定义的java 技术系统包括以下几个组成部分: java 程序设计语言;各种硬件平台上的java 虚拟机;Cl…

Java 高并发下的实践

一、使用的技术HashMap ConcurrentHashMap Lock ReadWriteLock synchronized 二、一百万并发下的组合 ConcurrentLockMap /** To change this license header, choose License Headers in Project Properties.* To change this template file, choose Tools | Templates* …

java oca_OCA第2部分中的Java难题

java oca欢迎使用OCA的Java Puzzlers的第二部分。 在这一部分中,我们将看到一个有趣的案例,涉及Java 7附带的数字文字中的下划线分隔符。 在下面的类中,您可以在十进制文字中看到分隔符下划线。 还请注意,该类现在可以正常编译。…

jvm(2)-OutOfMemoryError 异常(内存溢出异常)

【0】README0.1)本文转自 深入理解 jvm, 旨在学习 OutOfMemoryError 异常(内存溢出异常) 的触发类型;0)准备知识0.1)除了程序计数器外,虚拟机内存的其他几个运行时区域(方…

java oca_OCA第7部分中的Java难题

java oca在OCA系列的Java Puzzlers的这一部分中,我将展示定义字符串和与之相关的潜在惊喜的多种方法。 创建字符串的两种基本类型是使用new关键字和仅使用字符串文字来创建。 String strWithNew new String( "hey" ); String strWithLiteral "ho&…

Java GC总结

一、gc两大基本算法1、引用计数法 2、根搜索法 二、gc改进收集算法 1、标记-清除算法 2、复制算法 3、标记-整理算法 分代收集算法 三、gc的类型 串行垃圾回收器(Serial Garbage Collector) 并行垃圾回收器(Parallel Garbage Collecto…

让CentOS能用yum自动安装rar和unrar

【0】README 0.1)本文转自: http://www.centoscn.com/CentOS/config/2015/0520/5485.html 目的:让CentOS能用yum自动安装rar和unrar 系统环境: CentOS 7.0 具体操作步骤如下: 1.编辑文件 编辑dag.repo文件&#xff0c…

java oca_OCA第6部分中的Java难题

java oca即使对于新的Java开发人员,构造函数也可能不是什么大谜。 本质上,当您创建一个类的实例时,该类的构造函数就会启动。 在Java Puzzlers系列的第6部分中,我们将看到一个与构造函数有关的案例。 public class Puzzler { publ…

Java 内存泄露总结

一、Java内存泄漏引起的原因:内存泄漏是指无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成内存空间的浪费称为内存泄漏。 二、内存泄露的方式 1、静态集合类引起内存泄漏 像HashMap、Vector等的使…

使用Mockito的Mock Void方法

大家好! 在我们之前的博客关于thenReturn和thenAnswer模拟方法之间的区别之后 ,我们又回来了关于Mockito的另一个有趣的博客。 在这里,我们将讨论“如何用Mockito模拟无效方法”。 让我们开始吧! 在编写代码时,总是至…

System.gc()调用 - 适用的场景

一、System.gc()调用 System.gc()用于调用垃圾收集器,在调用时,垃圾收集器将运行以回收未使用的内存空间。它将尝试释放被丢弃对象占用的内存。然而System.gc()调用附带一个免责声明,无法保证对垃圾收集器的调用。我们…

将模板方法模式应用到kmeans聚类算法

【0】README 0.1)本文描述和源代码均为原创,旨在说明 如何将模板方法模式应用到kmean聚类算法; 0.2)模板方法模式的intro, 参见 模板方法模式 0.3)for kmeans alg source code, please visit kmeans&a…

java oca_OCA第4部分中的Java难题

java oca在Java Puzzlers的第四部分中,我们有一些与char类型有关的东西。 public class Puzzler { public static void main(String[] args){ char myChar a ; myChar; System.out.println(myChar); } } 您可能已经猜到了。 它将打印“ b”,其原因是c…

毕业设计的十大问题

一、vue的跨域问题 1、前端本地用代理软件代理服务器 在vue项目下的 config/index.js 文件里面配置代理proxyTable:proxyTable: {/login: {target: http://192.168.1.1:8080/ntd/data,changeOrigin: true,pathRewrite: {^/login:}}2、后台服务器开启允许跨域的响应头 直接在tom…

设计模式入门(策略模式)

【0】README0.1)本文部分文字描述转自 “head first 设计模式”,旨在学习 设计模式入门(策略模式) 的基础知识;0.2)本文章节4和5的source code,参见 设计模式——策略模式源代码【1】看个荔枝&a…

java oca_OCA的Java拼图游戏第3部分

java oca在Java难题的第三部分中,我们将看到变量命名限制方面的惊喜。 如果我向您展示了这一点,那么我相信您不会因为它无法编译而感到惊讶。 静态是保留关键字之一,为什么它应该起作用? public class Puzzler {public static v…