java socket 参数

Java socket参数选项:

  • TCP_NODELAY:  表示立即发送数据
  • SO_RESUSEADDR:  表示是否允许重用socket所绑定的本地地址
  • SO_TIMEOUT :  表示接收数据时的等待超时时间 。 单位为毫秒,默认值为0 , 表示永远等待。
  • SO_LINGER:  表示当执行 socket的close方法的时候,是否立即关闭底层的socket 。 这个单位是秒。
  • SO_SNFBUF:  发送数据的缓冲区大小
  • SO_RCVBUF:  接收数据的缓冲区大小
  • SO_KEEPLIVE:  表示对于长时间处于空闲状态的socket,是否要自动把他关闭
  • OOBINLINE: 表示是否支持发送一个字节的tcp紧急数据

详细说明:

TCP_NODELAY:

设置该选项:  public void setTcpNoDelay(boolean on) throw SocketExpcetion

读取该选项: public boolean getTcpNoDelay(boolean on) throw SocketExpcetion

默认情况下,发送数据时采用Negale算法,Negale算法是指发送方发送数据的时候不会立刻发出,而是先放在缓冲区内,等待缓冲区满了再发送。发送完一批数据后,会等待接受方队这批数据的回应,然后再发送下一批数据。Negal算法适合发送方需要发送大批量数据,并且接收方会及时作出回应的场合,这种算法通过减少传输数据的次数来提高通信的效率。

如果发送方持续的发送小批量的数据,并且接收方不一定会立即发送相应数据,那么Negale算法会使发送方运行很慢。对已gui重新,如网络游戏程序(服务器需要实时跟踪客户端的鼠标移动),这个问题尤为突出。客户端鼠标位置的改动的信息需要实时发送到服务器端,由于Negale算法采用缓冲,大大降低了实时响应的速度,导致客户端程序很慢。

TCP_NODEALY 的默认值时 FALSE,采用Negale算法,如果设置为 true,就好关闭socket的缓冲,确保数据及时发送出去。

如果socket的底层不知道 tcp_nodelay 选项,那么调用 getTcpNoDelay 和 setTcpNoDelay方法会抛出SocketException

SO_RESUSEADDR 选项:

java socket 参数

时间: 2024-08-02 18:01:44

java socket 参数的相关文章

java socket 的参数选项解读(转)

java socket中有很多参数可以选择,这篇博客的目的是沉淀出这些参数的语义和用法,供自己以后查阅. 1.java socket参数选项总览 在JDK1.6中有如下参数选项: 1 public final static int TCP_NODELAY = 0x0001; 2 3 public final static int SO_BINDADDR = 0x000F; 4 5 public final static int SO_REUSEADDR = 0x04; 6 7 public fi

java socket 的参数选项解读

java socket中有很多参数可以选择,这篇博客的目的是沉淀出这些参数的语义和用法,供自己以后查阅. 1.java socket参数选项总览 在JDK1.6中有如下参数选项: 1 public final static int TCP_NODELAY = 0x0001; 2 3 public final static int SO_BINDADDR = 0x000F; 4 5 public final static int SO_REUSEADDR = 0x04; 6 7 public fi

java socket 基于UDP/IP 协议

Java  socket 基于UDP/IP协议应用 服务器端:  1.创建DatagramSocket,指定端口号 2.创建DatagramPacket 3.接收客户端发送的数据 4.读取数据 客户端: 1.  定义发送信息: 服务器的IP 端口号  发送的内容 2.  创建DatagramPacket,包含将要发送的信息 3.  创建DatagramSocket 4.  发送数据 服务器端 import java.io.IOException; import java.net.Datagram

入门级的Java Socket代码

在男友手把手的指导下,写出第一个类似于"hello world"的socket程序. 男友要求: 1. 程序以命令行方式运行,在两台联网的电脑上分别运行: 2. 一台电脑的命令行中输入"程序名称 wait",运行程序,进入监听状态: 3. 一台电脑的命令行中输入"程序名称 ip地址",运行程序,连接另一台电脑: 4. 两台电脑均可发送接收消息. 分析流程图: 附代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 1

java socket 基于TCP/IP 协议

Java socket 基于TCP/IP 协议应用 多线程服务器原理: 1.          服务器端创建serversocket并绑定要监听的端口号 ,循环调用serversoket 的accept()方法,等待客户端的连接请求 2.          客户端创建一个socket绑定服务器端的IP地址和服务器监听的端口号并请求和服务器端连接 3.          服务器端接收到客户端的请求后,创建一个socket与客户端建立专线连接 4.          建立连接的两个socket在一个

java socket 多线程网络传输多个文件

http://blog.csdn.net/njchenyi/article/details/9072845 java socket 多线程网络传输多个文件 2013-06-10 21:26 3596人阅读 评论(1) 收藏 举报  分类: JAVA(158)  由于需要研究了下用 java socket 传输文件,由于需要传输多个文件,因此,采用了多线程设计.客户端每个线程创建一个 socket 连接,每个 socket 连接负责传输一个文件,服务端的ServerSocket每次 accept

Java Socket发送与接收HTTP消息简单实现

在上次Java Socket现实简单的HTTP服务我 们实现了简单的HTTP服务,它可以用来模拟HTTP服务,用它可以截获HTTP请求的原始码流,让我们很清楚的了解到我们向服务发的HTTP消息的结 构,对HTTP请求消息有个清晰的认识.这一节我想写了一个客户的程序,就是用来模拟浏览器,用来向服务器发送HTTP请求,最得要的是可以用它来显示服 务器发回来的HTTP响应消息的一般结构. [java] view plaincopy import java.io.IOException; import 

如何为可扩展系统进行Java Socket编程

从简单I/O到异步非阻塞channel的Java Socket模型演变之旅 上世纪九十年代后期,我在一家在线视频游戏工资工作,在哪里我主要的工作就是编写Unix Unix Berkley Socket和Windows WinSock代码.我的任务是确保视频游戏客户端和一个游戏服务器通信.很幸运有这样的机会写一些Java Socket代码,我对Java流式网络编程和简洁明了的API着迷.这一点都不让人惊讶,Java最初就是设计促进智能设备之间的通信,这一点很好的转移到了桌面应用和服务器应用. 19

java socket.io结合node.js

用java开发的socket.io,用户node.js作为服务器端,作用就是同步同步,比如开发网站的时候,当用户登录之后,可以实现当前浏览器多个窗口的页面都是登录后的效果. 首先需要安装socket.io,以及所需要的模块, 在项目里引用socket.io的js包, java代码构建socket.io的类,这个类主要参考https://github.com/Gottox/socket.io-java-client. 还需要安装node.js, 在项目文件的位置新建socketserver.js