socket编程小结

Socket建立在TCP/IP协议基础之上,可看做是通信连接两端的收发器,服务器与客户都通过Socket来收发数据。除了Socket的第一个不带参数的构造方法以外,其他构造都会试图建立与服务器的连接,如果连接成功,就返回Socket对象;如果因为某些原因连接失败,就会抛出IOException.
  当客户请求与服务器程序连接时,可能要等待一段时间。默认情况下,客户会一直等待下去,直到连接成功,或者出现异常。如果希望限定等待连接的时间,可通过Connection(SocketAddress endPoint,int timeout)方法来设置超时时间,参数timeout设定超时时间,以毫秒为单位。
  在通信过程中,如果发送方没有关闭Socket,就突然终止程序,接收方在接收数据时会抛出SocketExcetpion。发送方发送完数据后,应该及时关闭Socket或关闭Socket的输出流,这样接收方就能顺利读到输入流的末尾。
  Socket有许多选项,用来控制建立连接、接 收和发送数据,以及关闭Socket的行为。
(1)TCP_NODELAY:表示立即发送数据
(2)SO_RESUSEADDRE:表示是否允许重用Socket所绑定的本地地址
(3)SO_TIMEOUT:表示接收数据时的等待超时时间。
(4)SO_LIINGER:表示当执行Socket的close()方法时,是否立即关闭底层的Socket.
(5)SO_SNFUF:表示发送数据的缓冲区的大小
(6)SO_RCVBUF:表示接收数据的缓冲区的大小
(7)SO_KEEPLIVE:表示对于长时间处于空闲状态的Socket,是否要自动把它关闭。
(8)OOBINLINE:表示是否支持发送一个字节的TCP紧急数据。

你可能感兴趣的:(编程,socket)