Socket----java.net

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链接的相关设置
  1. void setTcpNoDelay(boolean on);boolean getTcpNoDelay()这个设置主要针对一些很小数据包,为了提升有效数据的传输,而进行的一些缓存设置。设置为True的时候,会缓存数据包,提升有效数据的占用率。
  2. setSoLinger;int getSoLinger()当关闭socket的时候,若是缓存中还有数据要发送,就等一段时间,阻塞。默认状况下,关闭链接的时候,清除掉缓存数据
  3. void setOOBInline(boolean on);void sendUrgentData(int data)第一个是设置发送紧急字段,第二个是发送具体的字节。int的中低8位发送
  4. void setSoTimeout(int timeout);getSoTimeout读数据的阻塞时间,0表明无限时间阻塞,其余正整数为有必定时间阻塞,单位毫秒
  5. void setSendBufferSize(int size); public int getSendBufferSize()void setReceiveBufferSize(int size);getReceiveBufferSize;为底层设置缓存大小,不必定被底层采用。
  6. void setKeepAlive(boolean on):boolean getKeepAlive()Tcp长链接设置,在没有数据的时候保持2个小时的长链接,再进行探测。
  7. void setTrafficClass(int tc) public int getTrafficClass()。没看懂,设置帧中的阻塞等级。
  8. boolean getReuseAddress();void setReuseAddress(boolean on)。通常在关闭socket后会保持一段时间端口,防止关闭ack的数据包丢失。默认是不启用这个功能。
  9. public void close()关闭
  10. void shutdownInput()输入关闭
  11. void shutdownOutput()输出关闭
  12. isConnected; boolean isBound();boolean isClosed();boolean isInputShutdown();boolean isOutputShutdown()相关状态查询
  13. setSocketImplFactory不用系统默认的Socketimp类,本身定义
  14. void setPerformancePreferences(int connectionTime, int latency, int bandwidth)对一些性能的设置,不必定为底层采用

ServerSocketapi

服务器端的接口。相比于socket主要不一样是:缓存

  1. Socket accept()是监听端口若是有链接返回一个socket对象 2.void setSoTimeout(int timeout) 阻塞时间长度,主要针对accept函数。

Client:服务器

serveroracle

参考:socket

  1. docs.oracle.com/javase/tuto…
  2. docs.oracle.com/javase/7/do…

其余相关的知识

  • 文件表示FileDescriptor。能够好好深刻一下,根据一下网址深刻研究一下:blog.csdn.net/moakun/arti…
  • TCP的链接中断方式:心跳与长链接。
  • SSSocket
  • PrintWrite 打印字符输出流,与write不一样是具备自动刷新功能。
  • getChannel尚未看清楚。
相关文章
相关标签/搜索
本站公众号
   欢迎关注本站公众号,获取更多信息