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。
相关推荐
- `flags`:一般设置为0,但可以包含一些选项,如MSG_OOB(发送带外数据)等。 当调用send函数时,它首先会检查待发送数据的长度`len`与套接字`s`的发送缓冲区长度。如果`len`大于发送缓冲区的长度,函数将返回`...
然而,"TCP socket请求报文发送工具"可能提供了更高级的功能,比如自定义请求报文、设置超时、重试机制、保存和加载请求模板等。对于网络调试、性能测试或者自动化脚本编写,这样的工具非常有用。它允许用户发送任意...
在C#编程中,UDP(用户...总结,C#中实现UDP组播的关键在于正确配置Socket选项,加入组播组,并设置好发送和接收的过程。通过这种方式,你可以构建高效的多播通信系统,尤其适用于需要广播信息给多个接收者的应用场景。
### C# 使用 Socket 发送与接收数据 #### 知识点概述 在 C# 编程语言中,使用 Socket 进行网络通信是一种常见的技术手段。Socket 是一种用于在网络节点间进行双向通信的协议和机制,它使得不同计算机之间能够通过...
本示例中的"SOCKET客户端 发送数据例子"是用C语言编写的,它封装了发送和接收数据的函数,与相应的服务端配合使用,构成了一整套通信解决方案。 首先,让我们了解什么是Socket。Socket是操作系统提供的一个接口,它...
其中`socket()`函数创建套接字,`bind()`绑定本地地址,`connect()`连接到远程地址(对于单播),`sendto()`和`recvfrom()`用于发送和接收数据,`setsockopt()`设置套接字选项,如指定网卡。 给定的代码文件包括了...
"EVC socket(16进制接收发送)"这个项目涉及的关键知识点主要包括EVC编程环境、TCP/IP协议、16进制数据处理以及socket编程接口。 1. **EVC(Embedded Visual C++)编程环境**: EVC是微软为Windows CE平台提供的一...
创建原始套接字,设置套接字选项,绑定到接口,构造以太网数据帧并发送,都是C++程序中必不可少的步骤。实际代码会涉及对`struct ether_header`、`struct sockaddr_ll`等结构体的操作,以及错误处理机制。 总之,...
`recv()`函数用于从Socket接收数据,`buf`是接收缓冲区,`len`是最大接收长度,`flags`同样可以设置一些选项。 八、模板函数设计 在实际开发中,为了代码的复用性和易维护性,我们可以设计模板函数来封装上述操作。...
- 文件"2使用TCP_NODELAY选项,告诉内核尽快将该数据包发送出去.txt"和"2连接进行TCP_NODELAY选项的设置,关闭Nagle算法,这样就会像telnet一样,不管有多少数据会立即发送,没有延迟.txt"提到了这个方法。...
监听UDP数据包意味着设置一个Socket来接收来自任何源的UDP数据报文。使用Socket的Bind方法绑定到特定的IP地址和端口号,这样就可以开始接收数据。 3. **端口号**: 描述中提到“端口号随使用者改变”,在UDP中,端口...
在 lwIP 中,Socket API 被用来创建、绑定、监听、连接和发送/接收数据,类似于在Linux或Windows中的标准Socket接口。 3. **STM32**:STM32是由意法半导体(STMicroelectronics)推出的基于ARM Cortex-M内核的微...
在C++中,socket编程主要依赖于`<sys/socket.h>`和`<netinet/in.h>`头文件,它们提供了创建socket、绑定、监听、连接、接受和发送数据等函数。在`socket.cpp`中,开发者可能定义了以下关键步骤: 1. 创建Socket:...
在计算机网络编程中,Socket API 是一种用于进程间通信(IPC)的标准接口,特别是在网络通信中,它允许程序发送和接收数据。在标题"socket非阻塞超时设置"中,我们关注的是如何配置Socket使其在等待数据时不会永久...
本案例主要关注C#中的TCP客户端如何实现16进制数据的发送和接收。 TCP是一种面向连接的、可靠的传输协议,它确保数据包按顺序无丢失地传输。在C#中,我们可以使用`System.Net.Sockets.TcpClient`类来创建TCP客户端...
一个线程负责接收数据,另一个线程负责发送数据,确保两者互不影响。 7. **内存管理与错误处理**:在实现过程中,要特别注意内存的分配与释放,避免内存泄漏。同时,对可能出现的网络错误和API调用错误进行适当的...
在C#中,我们通常使用`Socket`类的`Connect`方法建立连接,然后使用`Socket.Send`和`Socket.Receive`方法发送和接收数据块。 - 发送文件时,我们需要将文件读取为字节数组,然后分块发送。接收端则按顺序接收这些...
- 发送数据:通过Socket的send()或write()方法向服务器发送数据。 - 接收数据:使用recv()或read()方法接收服务器返回的数据。 - 关闭连接:完成通信后,客户端调用close()方法关闭Socket连接。 4. **Socket编程...
- **SO_PRIORITY**:设置套接字发送数据的优先级,影响网络队列的排序。 - **SO_LINGER**:控制`close`或`shutdown`操作的行为,可以选择等待所有数据发送完毕或在指定时间后强制关闭。 每个选项的设置都会直接影响...
运行这个程序,用户可以根据提供的界面和选项进行配置,然后观察报文的发送和接收情况,查看通信日志,从而深入理解TCP通信的细节,优化应用程序的网络性能。 总之,TCP报文发送接收测试工具是网络开发和调试的利器...