`
coffee_hc
  • 浏览: 9083 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

SocketOptions属性的使用解读

阅读更多
1.       
TCP_NODELAY:

Nagle 算法。

2.       
SO_TIMEOUT:
ServerSocket.accept();
SocketInputStream.read(); DatagramSocket.receive(); 选项必须在进入阻塞操作前设置才能生效。

3.       
SO_SNDBUF:

       解读:这个发送缓冲区不要与nagle的缓冲区大小认为是同一个东西,其实nagle的最大缓冲区是有MTU来决定的。其实这个属性在windows平台下是设置了内核缓冲区的大小,linux下我还不知道。在win平台上该值默认为8K,这个值设置过小的话会导致数据包发送非常频繁,原因么可以参考一下这篇文章http://blog.163.com/coffee_hc/blog/static/4485331920114921715294/ (很早以前看到的一篇文章,都不知道原文地址了)
       
SO_REUSEADDR

       解读:其实就是端口重用,为什么要使用这个属性是因为操作系统在关闭连接的时候端口并不是马上释放掉,因为可能还有一些数据没有接受完成,所以再下一次再绑定该端口的时候会导致失败,它的使用场景主要就是在服务器程序关闭后马上启动一个新的服务的时候,这个时候需要设置该属性,否则很大几率会导致绑定端口失败。
       
SO_RCVBUF

         解读:这个接受缓冲区和SO_SNDBUF相反,当大传输量的时候则需要大一点的缓冲区这样可以提高传输速度,但是对应信息量非常小的则可以使用小一点的缓冲区确保数据的及时处理。
       
SO_OOBINLINE

         解读:无。暂时没有用到需要使用的情况,也没有使用案例,所以暂时不做解读。
       
SO_LINGER

         解读:由于在调用了close()方法之后,程序默认会检查是否还有数据没有接受或者发送完,有的话是需要将这些数据处理完再关闭释放端口。但是人的忍耐是有限度的,不能守夜的大叔要关门了你们还在他妈的加班,所以必须有超时时间,到了时间就强制都赶出门。
       
SO_KEEPALIVE

keepalive 选项时,如果在 2 个小时(注:实际值与实现有关)内在任意方向上都没有跨越套接字交换数据,则 TCP 会自动将 keepalive 探头发送到同位体。

9.       
SO_BROADCAST

解读:用于开启或关闭广播地址上组播功能,当然这个也要在网络环境支持。
   
SO_BINDADDR

解读:这个值是只读的,虽然有set方法支持,但是并不能设置值的,因为绑定的地址在服务器启动的时候就已经定了,是不能改变的,所以这只是一个只读方法。

11.   
IP_TOS

解读:这个其实是IP协议中的类型定义标志位,google了一下也没发现有用的答案,参考了rfc791发现其实这个实际上是8个字节的组合,具体的每一位的含义可以参http://www.rfc-editor.org/rfc/rfc791.txt里面介绍的,其实就是标识这个IP包的数据处理的优先级的标志位(至少我看下来是这种理解),具体使用的时候还是参考协议更准确。
   
IP_MULTICAST_LOOP
         API说明:此选项启用或禁用多播数据报的本地回送。

13.   
IP_MULTICAST_IF,IP_MULTICAST_IF2

解读:这个主要是在机器上有多个网络接口(应该是网卡驱动)中选择需要网卡发送多播包。其实这个只需要用bind方法指定IP就可以做到了。
分享到:
评论

相关推荐

    socket的属性设置测试代码

    测试代码通常会涵盖多种选项,通过`getsockopt`和`setsockopt`的组合使用,来验证不同设置对Socket行为的影响,这对于理解和优化网络程序的性能至关重要。 总之,Socket属性设置是网络编程的重要一环,`getsockopt`...

    socket.io api

    例如,WebSocket 是一种低延迟、全双工的传输方式,但在某些旧版本浏览器中可能不支持,此时Socket.IO 会自动降级使用其他传输。 3. **WebSocket** WebSocket 是 HTML5 引入的一种网络协议,提供持久化的双向通信...

    Vue Socket.io源码解读

    Vue Socket.io源码解读 在本文中,我们将深入了解 Vue Socket.io 库的源码,了解其实现机制和设计理念。通过阅读源码,我们可以更好地理解如何使用该库,并且学习到很多有用的技术和经验。 首先,让我们来看看文件...

    linux socket tcp epoll使用教程 例子 源代码

    linux socket tcp epoll使用教程 例子 源代码

    sockettool 使用说明

    sockettool 使用说明, 介绍如何使用socket tool ,有详细介绍

    java socket使用加密协议传输对象

    通过使用SSLSocket,Java开发者可以确保在网络上传输的数据受到保护,即使在网络层面上被截获,数据也难以被解读。这对于维护用户的隐私和数据完整性至关重要。然而,正确配置和使用SSL/TLS协议并不总是直观的,需要...

    基于QNX的Socket测试程序

    1. **创建Socket**:使用`socket()`函数创建一个套接字。 2. **绑定(Bind)**:使用`bind()`函数将套接字与本地IP地址和端口关联。 3. **监听(Listen)**:使用`listen()`函数设置服务器最大连接队列长度,准备...

    socket加密使用OpenSsl

    SSL是Secure Socket Layer(安全套接层协议)的缩写,可以在Internet上提供秘密性传输。Netscape公司在推出第一个Web浏览器的同时,提出了SSL协议标准,目前已有3.0版本。SSL采用公开密钥技术

    SOCKET API使用经验

    介绍了SOCKET API 使用的一些经验。

    使用socket的安卓jni代码

    在标题中提到的“使用socket的安卓jni代码”项目中,开发者可能创建了一个C/C++库,该库包含了处理socket连接的函数。这些函数可以被Java层的代码通过JNI接口调用来建立、维护和关闭socket连接。 例如,`comm.c`、`...

    Android安卓使用iosocket进行Socket通信简单封装优雅写代码

    本文将详细介绍如何使用`io.socket`进行Socket通信的简单封装,以便在迭代开发中提高效率和代码质量。 首先,我们需要在项目中引入`io.socket`库。通常通过在`build.gradle`文件中添加依赖来实现: ```groovy ...

    Java Socket使用实例

    在这个“Java Socket使用实例”中,我们将探讨如何创建一个简单的Java Socket应用,它包括一个服务器端和一个客户端,两者通过Socket进行数据交换,将信息显示在窗口中。 首先,让我们了解Socket的基本概念。Socket...

    VB使用socket控件源码.rar

    在VB使用socket控件源码.rar这个压缩包中,我们可以期待找到一些关于如何在VB项目中应用Socket控件的实例代码。 Socket控件在VB中的使用主要包括以下几个方面: 1. **控件添加**:首先,开发者需要在VB工程中引入...

    socket_recv函数使用心得.

    socket_recv 函数使用心得 在学习 socket_recv 函数时,需要了解其返回值的含义和使用场景。在阻塞模式下,当网络异常时,recv 函数返回值为-1,表示连接异常,需要关闭连接。在非阻塞模式下,如果没有数据,recv ...

    c#使用Socket发送HTTP/HTTPS请求的实现代码

    使用Socket可以实现高效的网络通信,适用于实时性和可靠性要求高的应用场景。 HTTP/HTTPS请求 HTTP/HTTPS是两种常用的网络协议,分别用于超文本传输和安全超文本传输。HTTP是基于TCP/IP协议的无状态请求/响应式...

    delphi使用socket通讯例子-文件传输

    本文将深入探讨如何在Delphi中使用Socket进行文件传输。 首先,Socket是一种在不同计算机之间建立连接并进行数据交换的编程接口。在Delphi中,我们可以使用TIdTCPClient和TIdTCPServer组件来实现客户端和服务器端的...

    简单socket通信,学习使用

    在这个“简单socket通信,学习使用”的项目中,我们可以看到一个基础的Socket通信示例,这对于初学者理解网络通信的基本原理非常有帮助。 首先,我们需要理解Socket的概念。Socket在计算机网络中是一种通信端点,它...

    socket使用方法

    本篇将详细介绍如何在VC6.0下使用UDP(User Datagram Protocol)进行socket编程,并通过一个实例来展示具体步骤。 首先,理解UDP的基本概念。UDP是一种无连接的、不可靠的传输协议,它不保证数据包的顺序、完整性和...

    socket简单使用实例

    简单的socket使用实例,适合初学者使用学习

Global site tag (gtag.js) - Google Analytics