`

JAVA Socket的方法说明

阅读更多
    /**
     * Enable/disable TCP_NODELAY (disable/enable Nagle's algorithm).
     *
     * @param on <code>true</code> to enable TCP_NODELAY, 
     * <code>false</code> to disable.
     *
     * @exception SocketException if there is an error 
     * in the underlying protocol, such as a TCP error.
     * 
     * @since   JDK1.1
     *
     * @see #getTcpNoDelay()
     */
    public void setTcpNoDelay(boolean on) throws SocketException

  •  setTcpNoDelay

这是一个设置是否启用Nagle算法,Nagle算法是一个TCP层的通信流量的拥塞控制算法(Flow Control),在大学的计算机网络课本上都会提到这个慢启动(Slow start)”和“拥塞避免(Congestion avoidance)”,“快速重传(Fast retransmit)”、“快速恢复(Fast Recovery)”。

缺省的算法实现一般都是启用的。这样可以处理,防止发送方处理过快,接受方数据处理不过来的情况。但是,如果在实时处理上,通常发送方不需要关心接收方是否能够及时处理数据,因此可能需要设置这个参数。、

       如果设置ture,不启用Nagle‘s algorithm

       如果为false,启用Nagle's algorithm

       缺省值,依赖于socket的具体实现,通常是false。即启用Nagle

-----------------------------------------------------------------------------------------------------------

 

   /**
     * Send one byte of urgent data on the socket. The byte to be sent is the lowest eight
     * bits of the data parameter. The urgent byte is
     * sent after any preceding writes to the socket OutputStream
     * and before any future writes to the OutputStream.
     * @param data The byte of data to send
     * @exception IOException if there is an error
     *  sending the data.
     * @since 1.4
     */
    public void sendUrgentData (int data) throws IOException 

 

  •  sendUrgentData

 设置紧急数据包——在socket上发送一个byte的紧急数据,它会在所有socket的输出流(OutputStream),已经写入之后,但是在其他将要发送的数据之前。

     通常,发送紧急数据用于处理一些特殊情况。(如通知对方执行某个控制指令)。

    /**
     *  Enable/disable SO_TIMEOUT with the specified timeout, in
     *  milliseconds.  With this option set to a non-zero timeout,
     *  a read() call on the InputStream associated with this Socket
     *  will block for only this amount of time.  If the timeout expires,
     *  a <B>java.net.SocketTimeoutException</B> is raised, though the
     *  Socket is still valid. The option <B>must</B> be enabled
     *  prior to entering the blocking operation to have effect. The
     *  timeout must be > 0.
     *  A timeout of zero is interpreted as an infinite timeout.
     * @param timeout the specified timeout, in milliseconds.
     * @exception SocketException if there is an error
     * in the underlying protocol, such as a TCP error. 
     * @since   JDK 1.1
     * @see #getSoTimeout()
     */
    public synchronized void setSoTimeout(int timeout) throws SocketException

  

  •  setSoTimeout

设置超时时间,单位毫秒,这是一个同步方法。这个超时不同于应用层协议的超时,如http协议的超时。

 

作用:

如果socket在输入流inputstream执行了read()方法,那么最多等待timeout时间,如果超过这个timeout时间,程序会抛出SocketException异常,注,即使抛出了SocketException异常,该socket仍然是有效的!如果这个时候去重新连接统一端口的Socket,会失败。

如果参数设置为0,等同于无超时时间。

 

 

 

 

 

分享到:
评论

相关推荐

    Java课程设计Java Socket实现聊天室源码内含项目说明.zip

    Java课程设计Java Socket实现聊天室源码内含项目说明.zipJava课程设计Java Socket实现聊天室源码内含项目说明.zipJava课程设计Java Socket实现聊天室源码内含项目说明.zipJava课程设计Java Socket实现聊天室源码内含...

    Java Socket聊天和文件传输工具(更新)

    Java Socket技术是网络编程中的重要组成部分,主要用于实现客户端与服务器之间的通信。在这个“Java Socket聊天和文件传输工具”中,开发者结合了实时聊天和文件传输的功能,使得用户可以在进行文字交流的同时,无缝...

    java对Socket进行了封装,可以通过注解调用双端的方法,让socket使用起来极其简单方便,是一个jar包

    所以我对socket进行了封装,客户端和服务端可以通过配置注解,让双方相互调用注解方法,提供了专门的工具类,让注解方法可以支持返回list或map等集合或其他的类型,三行代码你就可以完美的使用socket进行通信,支持...

    JAVA Socket远程执行任务

    提供的文件列表中,`Distributed.iml`是IntelliJ IDEA项目的配置文件,`word.txt`可能包含示例的说明文档,`src`目录包含了Java源代码,`.idea`目录存储了IDE的项目设置,`out`目录则是编译生成的字节码文件。...

    C#和java 之间基于Socket的通信

    - C#客户端创建`Socket`实例并调用`Connect()`方法,而Java服务器端创建`ServerSocket`实例,监听客户端的连接请求。 6. **实现简单通信**: - 简单通信通常涉及发送字符串或二进制数据。发送方将数据写入输出流...

    java socket for http socket

    javac Server.java java.exe Server 查看说明 可以简单得到http请求头 便于分析http

    java socket查询数据库实现登录验证.zip

    Java Socket编程是网络编程的基础,它允许两个应用之间建立直接的、双向的通信。在这个"java socket查询数据库实现登录验证"的示例中,我们将深入探讨如何使用Java Socket连接到数据库,进行用户登录验证。 首先,...

    soc.rar_Java 网络_Java socket实验_SOC_java socket _计算机网络

    标题"Soc.rar_Java 网络_Java socket实验_SOC_java socket _计算机网络"中,"SOC"通常指的是System on Chip(片上系统),在这里可能是"Socket Operation"或"Socket Communication"的缩写,暗示我们关注的是Java中的...

    java socket 即时聊天工具(含设计文档)

    Java Socket 是一种网络通信协议,它是Java编程语言中实现低级网络通信的重要API。在这个“java socket 即时聊天工具”项目中,我们看到它被用于构建一个简单的即时聊天应用程序,包括客户端和服务器端两部分。这样...

    liaotian_java.rar_java socket _java socket 聊天_java 多 聊天_socket j

    Java Socket编程是网络通信的核心技术之一,主要用于实现两个网络应用程序之间的双向通信。在这个"liaotian_java.rar"压缩包中,包含了一个简单的Java聊天程序,它利用Socket接口实现了多用户在网络上的聊天功能。...

    android中java和C的socket通信demo

    以上就是关于“Android中Java和C的Socket通信Demo”的详细说明,包括Java Socket和C Socket的基本使用,JNI接口的建立,文件描述符的传递以及Ashmem的使用。理解并掌握这些知识点,能够帮助开发者在Android平台上...

    JSocket_Server.rar_jSocket server_java server socket_java socket

    Java Socket编程是网络编程的基础,它提供了在两个网络应用程序之间建立和维护通信连接的能力。`JSocket_Server.rar` 提供了一个具体的Java Socket服务器实现的例子,这对于理解和实践Java服务器端网络编程至关重要...

    java_socket_simple_Server.rar_java socket _socket java

    Java Socket编程是Java网络编程的基础,它提供了在网络中两台计算机之间进行通信的能力。这个"java_socket_simple_Server.rar"压缩包包含了一个简单的Java Socket服务器端示例,名为"Server.java",以及一个可能是...

    java写的socket通信客户端

    Java编写的Socket通信客户端是网络编程中的一个基础组件,它允许两台计算机通过TCP/IP协议进行双向通信。在这个客户端程序中,主要涉及了Java的Socket类和InputStream/OutputStream类,用于建立连接、发送数据和接收...

    java_socket_smtp.rar_SMTPFrame.java_java base64 smtp_java socket

    在Java中创建一个Socket实例,然后通过`Socket#connect()`方法与SMTP服务器建立连接。`Socket`对象的`OutputStream`可以用来发送SMTP命令,而`InputStream`则用于接收服务器的响应。 `www.pudn.com.txt`可能包含的...

    java Socket通信实现.zip

    连接建立后,可以通过Socket对象的`getInputStream()`和`getOutputStream()`方法获取输入流和输出流,从而进行数据的读写。例如,使用`BufferedReader`和`PrintWriter`可以实现字符串的发送和接收。 5. **异常处理...

    java 和 android socket 简单交互

    Java和Android之间的Socket通信是移动应用开发中常见的一种网络编程技术,主要用于设备间的数据传输或者客户端与服务器的数据交互。在本场景中,我们有一个Java编写的服务器端(SocketServer.java)和Android客户端...

    Java socket实现QQ仿真

    Java Socket API提供了一种在应用程序之间建立网络连接的方法。Socket是TCP/IP协议栈的一部分,允许两个网络应用程序之间进行双向通信。在本项目中,Socket用于创建客户端与服务器之间的连接,使得数据能在两者间...

    AS与java socket通讯解决安全沙箱

    在IT行业中,网络通信是应用程序之间交互的重要方式之一。在这个场景中,我们关注的是...提供的压缩包文件“AS与java socket通讯 解决安全沙箱”可能包含示例代码或更详细的说明,帮助你更好地理解和实践这个过程。

    Java Socket 通讯例程

    3. **数据交换**:连接建立后,双方可以通过Socket对象的`getInputStream()`和`getOutputStream()`方法获取输入流和输出流,进行数据的读写。这是双向的,所以服务器和客户端都可以发送和接收数据。在`AppServer....

Global site tag (gtag.js) - Google Analytics