Java Socket编程总结
一、网络API
InetAddress 用于标识网络上的硬件资源,主要是IP地址
二、地址
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 的内容。
Java Socket编程总结相关推荐
- Java Socket编程如何建立两者关系
转自:http://developer.51cto.com/art/201003/190582.htm Java Socket编程需要大家详细的学习,有关的技术一直在不断的更新.那么要如何才能掌握好有 ...
- JAVA socket编程 Datagram套接字 UDP协议(转)
查看文章 JAVA socket编程 Datagram套接字 UDP协议 2009-05-13 09:35 1 UDP套接字 数据报(Datagram)是网络层数据单元在介质上传输信息的一 ...
- Java Socket编程详解
Java Socket编程是Java网络编程很重要的内容,现参考了许多资料,总结如下: 1. Java网络编程原理+Socket编程 http://www.cnblogs.com/linzheng/a ...
- Java Socket编程----通信是这样炼成的
转载自 Java Socket编程----通信是这样炼成的 Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socke ...
- tcp java实例_实现了基于TCP的Java Socket编程实例代码
实现了基于TCP的Java Socket编程,功能很简单:客户端向服务器端输出一名话"connect",服务器端接收输出到控制台并向客户端输出一名话"Hello" ...
- 用JAVA SOCKET编程,读服务器几个字符,再写入本地显示
Server: package cn.itcast.framework.socket;import java.io.BufferedReader; import java.io.IOException ...
- java socket 编程 客户机服务器_Java Socket编程服务器响应客户端实例代码
通过输入流来读取客户端信息,相应的时候通过输出流来实现. 服务端类的代码: import java.io.BufferedReader; import java.io.IOException; imp ...
- java socket编程心跳_Java Socket编程心跳包创建实例解析
1.什么是心跳包? 心跳包就是在客户端和服务器间定时通知对方自己状态的一个自己定义的命令字,按照一定的时间间隔发送,类似于心跳,所以叫做心跳包. 用来判断对方(设备,进程或其它网元)是否正常运行,采用 ...
- Java Socket编程 - 基于TCP方式的二进制文件传输【转】http://blog.csdn.net/jia20003/article/details/8248221...
此人博客挺好的,推荐一个! 一个基于Java Socket协议之上文件传输的完整示例,基于TCP通信完成. 除了基于TCP的二进制文件传输,还演示了JAVA Swing的一些编程技巧,Demo程序 实 ...
- 多线程Java Socket编程示例(转)
这篇做为学习孙卫琴<<Java网络编程精解>>的学习笔记吧.其中采用Java 5的ExecutorService来进行线程池的方式实现多线程,模拟客户端多用户向同一服务器端发送 ...
最新文章
- Tech ED的课程和动手实验营讲义已经发布,需要的赶紧去下载
- 【Groovy】Groovy 代码创建 ( 使用 Java 语法实现 Groovy 类和主函数并运行 | 按照 Groovy 语法改造上述 Java 语法规则代码 )
- bgb邻居关系建立模型_学习开发知识图谱中的长期关系依赖
- 分析:Java的好处究竟在哪里?
- 三维重建:***三维模型的网格细化
- python old six day
- 数据库容灾、复制解决方案全分析
- 进入大厂的面试经验详细总结(P7 拿 offer)
- jmeter正则表达式提取器使用
- 【Foreign】Weed [线段树]
- C# 在服务器生成文件/文件夹并压缩下载到本地
- Linux ---- 安装虚拟机
- 【模拟电子技术Analog Electronics Technology 6】—— 共射放大电路的原理与改进
- 北大30岁女博导获2019 IEEE青年成就奖,全球仅三人,深耕微纳电子、神经形态计算
- Cents7通过rpm安装mysql
- 浏览器劫持解决:解决浏览器的捆绑问题
- 求1000以内的“完数”
- 铁姆肯公司收购Aurora轴承公司
- 聊一聊DNS劫持那些事
- ZCMU 1600: 卡斯丁狗要吃糖葫芦
热门文章
- [剑指offer]面试题17:合并两个排序的链表
- Calendar Game POJ - 1082(关于日历的博弈问题)
- DDIA笔记—第六章 数据分区
- python123读取文本文件并排序输出_Python按字段对文本文件排序
- java的hr样式,spring+spring mvc+mybatis开发java医院HR人事管理系统(加强版本+ shiro)...
- DRDoS(memcache漏洞导致的反射型分布式拒绝服务攻击)
- 1847 奇怪的数学题(杜教筛 + Min_25 + 第二类斯特林数)
- E - The Imp(博弈/动态规划)
- SP10707 COT2 - Count on a tree II
- 【每日一题】7月7日题目精讲—最短路