socket是什么

1、socket是什么?
网络中的进程是通过socket来通信的.socket起源于Unix,而Unix和Linux的基本哲学之一就是万物皆文件(这种观点和java的万物皆对象有些类似),都可以open打开,read/write读写,close关闭.那么socket可以看做是一种特殊的文件,一些socket函数就是对其进行的操作(读/写IO、打开、关闭).
2、socket的基本操作
socket是“open-write/read-close'模式的一种实现,那么socket就提供了这些操作对应的函数接口.
3.构造方法
3.1
构造方法:Socket (InetAddress address, int port)
java.lang.SecurityException-建立连接到指定的IP地址和端口的套接字。如果不能建立连接,或连接到主机违反了 安全性约束条件(例如某个小的服务程序试图连接到某台计算机而不是载入它的计算机时),就产生这种异常。
3.2
protected Socket (SocketImpl implementation)--使用特定的套接字的实现(implementation)建立未连接的套接字。通常情况下开发者不应该使用这个方法,因为它允许指定主机名称和端口。
3.3
Socket (String host, int port)产生java .Net.UnknownHostException、java.io.IOException、java.lang.SecurityException异常--建立连接到特定主机和端口的套接字。这个方法允许指定一个字符串而不是一个InetAddress。如果指定的主机名称不能够解析,就不能建立连接,如果违反了安全性约束条件就产生异常。


4、使用套接字
  套接字可以执行大量的事务,例如读取信息、发送数据、关闭连接、设置套接字选项等等。此外,下面提供的方法可以获取套接字的信息(例如地址和端口位置):
  方法
  · void close()产生java.io.IOException异常--关闭套接字连接。关闭连接可能允许也可能不允许继续发送剩余的数据,这依赖于SO_LINGER套接字选项的设定。我们建议开发者在关闭套接字连接之前清除所有的输出流。
  · InetAddress getInetAddress()--返回连接到套接字的远程主机的地址。
  · InputStream getInputStream()产生java.io.IOException异常--返回一个输入流,它从该套接字连接到的应用程序读取信息。
  · OutputStream getOutputStream()产生java.io.IOException异常--返回一个输出流,它向套接字连接到的应用程序写入信息。
  · boolean getKeepAlive()产生java.net.SocketException异常--返回SO_KEEPALIVE套接字选项的状态。
  · InetAddress getLocalAddress()--返回与套接字关联的本地地址(在多地址计算机中有用)。
  int getLocalPort()--返回该套接字绑定在本地计算机上的端口号。
  · int getPort()--返回套接字连接到的远程服务的端口号。
  · int getReceiveBufferSize()产生java.net.SocketException异常--返回套接字使用的接收缓冲区大小,由SO_RCVBUF套接字选项的值决定。
  · int getSendBufferSize()产生java.net.SocketException异常--返回套接字使用的发送缓冲区大小,由SO_SNDBUF套接字选项的值决定。
  · int getSoLinger()产生java.net.SocketException异常--返回SO_LINGER套接字选项的值,它控制连接终止的时候未发送的数据将排队多长时间。
  · int getSoTimeout()产生java.net.SocketException异常--返回SO_TIMEOUT套接字选项的值,它控制读取操作将阻塞多少毫秒。如果返回值为0,计时器就被禁止了,该线程将无限期阻塞(直到数据可以使用或流被终止)。
  · boolean getTcpNoDelay()产生java.net.SocketException异常--如果TCP_NODELAY套接字选项的设置打开了返回"true",它控制是否允许使用Nagle 算法
  · void setKeepAlive(boolean onFlag)产生java.net.SocketException异常--允许或禁止SO_KEEPALIVE套接字选项。
  · void setReceiveBufferSize(int size)产生java.net.SocketException异常--修改SO_RCVBUF套接字选项的值,它为 操作系统的网络代码推荐用于接收输入的数据的缓冲区大小。并不是每种系统都支持这种功能或允许绝对控制这个特性。如果你希望缓冲输入的数据,我们建议你改用BufferedInputStream或BufferedReader。
  · void setSendBufferSize(int size)产生java.net.SocketException异常--修改SO_SNDBUF套接字选项的值,它为操作系统的网络代码推荐用于发送输入的数据的缓冲区大小。并不是每种系统都支持这种功能或允许绝对控制这个特性。如果你希望缓冲输入的数据,我们建议你改用BufferedOutputStream或Buffered Writer。
  static void setSocketImplFactory (SocketImplFactory factory)产生java.net.SocketException、java.io.IOException、java. lang.SecurityException异常--为JVM指定一个套接字实现的产生组件,它可以已经存在,也可能违反了安全性约束条件,无论是哪种情况都会产生异常。只能指定一个产生组件,当建立套接字的时候都会使用这个产生组件。
  · void setSoLinger(boolean onFlag, int duration)产生java.net. SocketException、java.lang.IllegalArgumentException异常--激活或禁止SO_LINGER套接字选项(根据布尔型参数onFlag的值),并指定按秒计算的持续时间。如果指定负值,将产生异常。
  · void setSoTimeout(int duration)产生java.net.SocketException异常--修改SO_TIMEOUT套接字选项的值,它控制读取操作将阻塞多长时间(按毫秒计)。0值会禁止超时设置,引起无限期阻塞。如果发生了超时,当套接字的输入流上发生读取操作的时候,会产生java.io.IOInterruptedException异常。这与内部的TCP计时器是截然不同的,它触发未知报文包的重新发送过程。
  · void setTcpNoDelay(boolean onFlag)产生java.net.SocketException异常--激活或禁止TCP_NODELAY套接字选项,它决定是否使用Nagle算法。
  · void shutdownInput()产生java.io.IOException异常--关闭与套接字关联的输入流,并删除所有发送的更多的信息。对输入流的进一步的读取将会遭遇流的结束标识符。
  · void shutdownOutput()产生java.io.IOException异常--关闭与套接字关联的输出流。前面写入的、但没有发送的任何信息将被清除,紧接着是TCP连接终止,它通知应用程序没有更多的数据可以使用了(在Java应用程序中,这样就到达了流的末尾)。向套接字进一步写入信息将引起IOException异常。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值