Java Socket运行在JVM或者底层OS提供的native socket之上,所有对Java Socket的操作都反映到native socket。所以从Socket发展渊源看,影响Socket性能的选项也必然是native socke暴露给Javat的一些设置。
#
|
选项 |
Java版本
|
Default
|
说明
|
1
|
TCP_NODELAY |
1.1+
|
false
|
设置是否尽快发送packer,而不管其大小 |
2
|
SO_TIMEOUT |
1.1+
|
0
|
数据读取超时,0表示永不超时 |
3
|
SO_LINGER |
1.1+
|
false
|
设置socket关闭后,没有发送的数据包逗留时间
|
4
|
SO_RCVBUF |
1.2+
|
|
接收Buffer |
5
|
SO_SNDBUF
|
1.2+
|
|
发送Buffer
|
6
|
SO_KEEPALIVE
|
1.3+
|
false
|
连接存活探测
|
7
|
OOBINLINE
|
1.4+
|
false
|
紧急数据处理设置 |
8
|
SO_REUSEADDR
|
1.4+
|
false
|
地址重用设置 |
1)TCP_NODELAY
2)SO_TIMEOUT
3)SO_LINGER
4)SO_RCVBUF
5)SO_SNDBUF
设置发送Bufffer,对socket传输数据影响和SO_RCVBUF类似
6)SO_KEEPALIVE
/proc/sys/net/ipv4/tcp_keepalive_time 每次确认包发送的间隔时间
/proc/sys/net/ipv4/tcp_keepalive_intvl 每次确认最多重发次数
/proc/sys/net/ipv4/tcp_keepalive_probes 重试间隔
7)OOBINLINE
8)SO_REUSEADDR
服务设置
针对一些不同的Internet服务设置不同的服务级别是一种有效的Internet资源利用和服务体现。例如视频/音频服务需要高带宽、低延时,但允许少量丢包,而email等对贷款和延时不太关注,主要在合理的时间传输到就无伤大雅。这和分布式CAP理论一样,满足所有美好特性的服务很难达成,一是资源部允许,而是没有必要。
TCP定义了四种服务类型,但这些不一定在所有路由器等网络设备和本地TCP栈支持,这些设置仅是给底层实现一个提示
1)低成本,0x02
2)高可靠性,0x04
3)最大吞吐量,0x08
4)最小延时,0x10
这四种服务可以组合设置,通过位或运算设置:
public void setTrafficClass(int trafficClass) throws SocketException
比如我们设置视频服务的设置s.setTrafficClass(0x08 | 0x10);
在Java5之后增加了一个不同方法设置这些服务偏好:
public void setPerformancePreferences(int connectionTime, int latency, int bandwidth)
这个方法用数值表达在连接时间、延时、贷款一个偏好。如setPerformancePreferences(1,101,2),表示最看重latency,其次bandwidth,最不关注的是connectionTime。
相关推荐
这篇文章首先介绍Socket类的各个构造方法, 以及成员方法的用法, 接着介绍 Socket的一些选项的作用, 这些选项可控制客户建立与服务器的连接, 以及接收和发送数据的行为.
1、首先需要定义的对象: SOCKET ReceivingSocket ... 0,//接收的附加选项,设置为0即可 (SOCKADDR*)&SenderAddr,//发送端的Socket地址 &SenderAddrSize//发送端Socket地址的大小 ) 7、关闭socket,关闭WSA
为使用发送接收超时设置,必须将标志位置位置为WSA_FLAG_OVERLAPPED。在本课程设计 中,发送TCP包时隐藏了自己的IP地址,因此我们要自己填充IP头,设置IP头操作选项。 其中flag设置为ture,并设定 IP_HDRINCL 选项,...
伪头部的格 式如图-3所示 0 8 16 24 31 "源IP地址 " "目的IP地址 " "00000000 "协议号(6) "TCP长度 " 创建一个原始套接字,并设置IP头选项 SOCKET sock; sock = socket(AF_INET,SOCK_RAW,IPPROTO_IP); 或者: sock...
UDT_LINGER是设置socket关闭时是否立即停止发送缓冲区的数据。 UDT_RENDEZVOUS设置集合点模式,在穿越防火墙时很有用。 UDT_SNDTIMEO和UDT_RCVTIMEO是timeout值 UDT_REUSEADDR设置UDP端口是否可以给其他UDT使用,...
4.6.1 在“已连接的”socket上发送数据 4.6.2 在“无连接的”socket上发送数据 4.6.3 接收数据 4.6.4 socket解复用器中的关联 4.7 socket的关闭 4.7.1 closesocket 4.7.2 shutdown 4.8 客户端和服务器概览 第5章 ...
4.6.1 在“已连接的”socket上发送数据 4.6.2 在“无连接的”socket上发送数据 4.6.3 接收数据 4.6.4 socket解复用器中的关联 4.7 socket的关闭 4.7.1 closesocket 4.7.2 shutdown 4.8 客户端和服务器概览 第5章 ...
CSocket的编程步骤:(注意我们一定要在创建MFC程序第二步的时候选上Windows Socket选项,其中ServerSocket是服务器端用到的,ClientSocket是客户端用的。) (1)构造CSocket对象,如下例: CSocket ServerSocket;...
CSocket的编程步骤:(注意我们一定要在创建MFC程序第二步的时候选上Windows Socket选项,其中ServerSocket是服务器端用到的,ClientSocket是客户端用的。) (1)构造CSocket对象,如下例: CSocket ServerSocket;...
图9.3 参数获取流程图 4.ping()函数流程图 ping()函数是本程序的核心部分它调用其他模块的函数来实现,其主要步骤包括创建 接字,设置路由选项(如果需要的话)、设置接收和发送超时值、名字解析(如果需要 的话)...
一、系统概要 本系统完成的功能有发送共享信息,看到上线...CSocket的编程步骤:(注意我们一定要在创建MFC程序第二步的时候选上Windows Socket选项,其中ServerSocket是服务器端用到的,ClientSocket是客户端用的。)
6.4.3 带外数据接收方法的示例 本章小结 第七章 UDF数据报 7.1 UDP数据报的概述 7.2 UDP通信的过程 7.3 UDP的服务器和TCP服务器的比较 7.4 UDP的“连接” 7.5 应用示例 本章小结 ...
TelnetClient包,Telnet...然后,可以使用getInputStream() 和 getOutputStream() 方法获取用于通过Telnet连接发送和接收数据的InputStream和OutputStream 。使用完流后,必须调用 disconnect 而不是简单地关闭流。
- 二进制数据的发送和接收 - 您可以插入自己喜欢的 Json 解码器 SignalR Core 功能: - 支持最新的 SignalR Core - 支持 MessagePack 编码 - 强类型回调 - 使用具有后备选项的最快的 Websocket 传输进行长轮询 - ...
在全屏接收屏幕广播时,如果教师未锁定学生机键盘鼠标,学生就可以在屏幕广播窗口上点击鼠标右键,在图所示的弹出菜单中除去全屏显示选项后即变为窗口方式接收广播。 学生在此模式下可以选择智能滚动、自由滚动、...
网络应用程序就是这样通过socket进行数据的发送与接收的。UDP与TCP的工作原理与编写过程,包含如何在程序中连接库文件,telnet工具软件在编写网络程序中的用途 第十七课: 多线程程序的编写,如何通过互斥来保证多...
《C#全能速查宝典》共分为8章,分别介绍了C#语言基础、Windows窗体及常用控件、Windows高级控件、控件公共属性、方法及事件、数据库开发、文件、数据流与注册表、GDI+绘图技术和C#高级编程,共包含562个C#编程中常用...
2.2.3 在Socket中发送大容量的消息 2.2.4 将流序列化或反序列化为对象 2.2.5 用InnerList列表记录信息 2.3 设计过程 2.3.1 类库的设计 2.3.2 客户端注册模块设计 2.3.3 客户端登录模块设计 2.3.4 客户端QQ模块设计 ...
2.2.3 在Socket中发送大容量的消息 2.2.4 将流序列化或反序列化为对象 2.2.5 用InnerList列表记录信息 2.3 设计过程 2.3.1 类库的设计 2.3.2 客户端注册模块设计 2.3.3 客户端登录模块设计 2.3.4 客户端QQ模块设计 ...