您好,欢迎来到微智科技网。
搜索
您的当前位置:首页tcp/ip参数控制

tcp/ip参数控制

来源:微智科技网

1、Keep-Alive

如果一段时间内没有数据交换,通信的每个终端都可能会怀疑对方是否还处于活跃状态,TCP协议提供了一种Keep-Alive的机制,该机制在经过一段不活动时间后,将向另一个终端发送一个探测消息。如果另一个终端还处于活跃状态,它将回复一个确认消息。如果经过几次尝试后依然没有收到另一个终端的确认消息,则终止发送探测消息,关闭套接字,并在下一次尝试I/O操作时抛出一个异常。

应用程序只要在探测消息失败时才能察觉到keep-alive机制的工作。

默认关闭。

2、发送和接收缓存区大小

一旦创建了一个Socket或DatagramSocket实例,操作系统就必须为其分配缓存区一存放接收的和要发送的数据。

还可以在ServerSocket上指定接收缓冲区大小,不过,这实际上是为accept方法所创建的新Socket实例设置接收缓冲区大小。

当接收了一个新的Socket,它就可以立刻开始接收数据,因此,需要在accept方法完成连接之前设置好缓冲区的大小。

3、超时

很多I/O操作如果不能立即完成就会阻塞等待,读操作将阻塞等待直到至少有一个字节可读;接收操作将阻塞等待直到成功建立连接。

setSoTimeout如果为0,则表示该操作永不超时。

5、消除缓冲延迟

TCP协议将数据缓存起来直到足够多时一次发送,以避免发送过小的数据包浪费网络资源。虽然这个功能有利于网络,但应用程序可能对所造成的缓冲延迟不能容忍。

6、紧急数据

假设你已经向一个慢速接收者发送了很多数据,突然又又了它急需的其他数据,如果将这些数据发送到输出流,它们将追加在常规数据队列的后面,无法保证接收者能够立即接收。为了解决这个问题,TCP协议中包含了紧急(urgent)数据的概念,这类数据可以(理论上来说)跳到前面去。由于它们能够绕过常规数据流,这些数据称为频道外数据。

注意,Java中紧急数据几乎没什么用,因为紧急字节与常规字节按照传输的顺序混在一起。实际上,Java接收者并不能区分其是否在接收紧急数据。

7、关闭后停留

当调用套接字的close方法后,即使套接字的缓冲区中还有没有发送的数据,它也将立即返回。这样不发送完所有数据可能导致的问题是主机将在后面的某个时刻发生故障。其实可以选择让close方法停留或阻塞一段时间,直到所有数据都已经发送并确认,或发生了超时。

8、广播许可

一些操作系统要求显示对广播许可进行请求。

9、通信等级

有的网络对满足服务条件的数据包提供了增强的服务或额外的保险。一个数据包的通信等级(traffic class)由数据包在网络中传输时其内部的一个值来指定。

10、基于性能的协议选择

TCP协议并不是套接字唯一可选的协议。使用什么样的协议取决于应用程序的侧重点是什么。Java允许开发者根据不同性能特征对于应用程序的重要程序,为具体实现给出建议。通过setPerformancePreferences(int connectionTime,  int latency, int bandwidth)方法进行设置。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 7swz.com 版权所有 赣ICP备2024042798号-8

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务