1简介
socket的类是低端的Tcp客户端接口。他的实现是靠SocketImp的子类来实现,SocketImp是一个抽闲类,用于Socket、serverSocket的抽闲实现,具体的子列实现功能。Socket类中调用一个工厂类SocketFactary返回一个具体的Socket类。html
Socket: 主要先关函数:java
- void bind(SocketAddress bindpoint) 与本地ip与端口绑定
- void close()关闭socket,并关闭相关流、通道资源。
- void connect(SocketAddress endpoint) ;void connect(SocketAddress endpoint, int timeout) 链接serverSocket,若是直接采用流的时候,不用打开connnet,流为隐式的打开链接
- InetAddress getInetAddress();getInetAddress;int getPort();int getLocalPort();SocketAddress getRemoteSocketAddress();SocketAddress getLocalSocketAddress()或者本地与链接的端口与ip地址
- InputStream getInputStream(); OutputStream getOutputStream();SocketChannel getChannel()打开输入流、输出流、通道。若是通道已经打开,输入输出流为代理给通道。输出流通常采用PrintWriter类(采用OutputStreamWriter进行字节流与字符流的转换)进行自动刷新。而输入流通常采用缓存的方式进行。
- 参数设置,针对Tcp链接的相关设置
- void setTcpNoDelay(boolean on);boolean getTcpNoDelay()这个设置主要针对一些很小数据包,为了提升有效数据的传输,而进行的一些缓存设置。设置为True的时候,会缓存数据包,提升有效数据的占用率。
- setSoLinger;int getSoLinger()当关闭socket的时候,若是缓存中还有数据要发送,就等一段时间,阻塞。默认状况下,关闭链接的时候,清除掉缓存数据
- void setOOBInline(boolean on);void sendUrgentData(int data)第一个是设置发送紧急字段,第二个是发送具体的字节。int的中低8位发送
- void setSoTimeout(int timeout);getSoTimeout读数据的阻塞时间,0表明无限时间阻塞,其余正整数为有必定时间阻塞,单位毫秒
- void setSendBufferSize(int size); public int getSendBufferSize()void setReceiveBufferSize(int size);getReceiveBufferSize;为底层设置缓存大小,不必定被底层采用。
- void setKeepAlive(boolean on):boolean getKeepAlive()Tcp长链接设置,在没有数据的时候保持2个小时的长链接,再进行探测。
- void setTrafficClass(int tc) public int getTrafficClass()。没看懂,设置帧中的阻塞等级。
- boolean getReuseAddress();void setReuseAddress(boolean on)。通常在关闭socket后会保持一段时间端口,防止关闭ack的数据包丢失。默认是不启用这个功能。
- public void close()关闭
- void shutdownInput()输入关闭
- void shutdownOutput()输出关闭
- isConnected; boolean isBound();boolean isClosed();boolean isInputShutdown();boolean isOutputShutdown()相关状态查询
- setSocketImplFactory不用系统默认的Socketimp类,本身定义
- void setPerformancePreferences(int connectionTime, int latency, int bandwidth)对一些性能的设置,不必定为底层采用
ServerSocketapi
服务器端的接口。相比于socket主要不一样是:缓存
- Socket accept()是监听端口若是有链接返回一个socket对象 2.void setSoTimeout(int timeout) 阻塞时间长度,主要针对accept函数。
Client:服务器
serveroracle
参考:socket
- docs.oracle.com/javase/tuto…
- docs.oracle.com/javase/7/do…
其余相关的知识
- 文件表示FileDescriptor。能够好好深刻一下,根据一下网址深刻研究一下:blog.csdn.net/moakun/arti…
- TCP的链接中断方式:心跳与长链接。
- SSSocket
- PrintWrite 打印字符输出流,与write不一样是具备自动刷新功能。
- getChannel尚未看清楚。