`
lukeshei
  • 浏览: 376007 次
  • 性别: Icon_minigender_1
  • 来自: 台北
社区版块
存档分类
最新评论

socket 程式應該注意的參數

阅读更多
這幾天再寫jabber component 時發生一個奇怪的問題, 伺服器與component 固定一段時間就會終止通訊,然而連線此時還是存在的,伺服器或客乎端都沒有當掉,而且一般的jabber client 連接在上面也沒有問題,惟獨自己實做的server與client 無法通訊,後來發現;幾個socket 重要的參數,當client需要樣長時間連線時這些參數格外重要:

setsockopt SOL_SOCKET, SO_KEEPALIVE
setsockopt IPPROTO_TCP, TCP_KEEPIDLE
setsockopt IPPROTO_TCP, TCP_KEEPCNT
setsockopt IPPROTO_TCP, TCP_KEEPINTVL

程式再加了這些tcp 參數設定後,症狀完全消失
分享到:
评论

相关推荐

    vc++实现socket

    在TCP/IP协议栈中,Socket分为两种类型:流式Socket(SOCK_STREAM,对应TCP)和数据报式Socket(SOCK_DGRAM,对应UDP)。这里我们主要讨论基于TCP的流式Socket。 在VC++中,我们通常使用Winsock库来实现Socket编程...

    windows的socket,线程等的封装库

    总结来说,`xSocket`库为Windows平台上的Socket和线程编程提供了一站式的解决方案,通过其封装的API,开发者可以更加专注于业务逻辑,而不用过多关注底层细节,从而提高开发效率和代码质量。同时,库内的聊天程序...

    简单的 Winsock 应用程式设计

    **简单的 Winsock 应用程式设计** 在计算机网络编程中,Winsock(Windows Sockets)是Windows操作系统上实现网络通信接口的API。它为开发者提供了一种标准的方式来编写跨平台的网络应用程序,允许应用程序通过TCP/...

    Android NDK中socket的用法以及注意事项分析

    创建socket是通过调用`socket()`函数实现的,它接受三个参数:协议族(AF_INET代表IPv4)、套接字类型(如SOCK_DGRAM代表UDP,SOCK_STREAM代表TCP)和协议(如IPPROTO_UDP或IPPROTO_TCP)。例如: ```c int sd = ...

    最新Python3.5零基础+高级+完整项目(28周全)培训视频学习资料

    函数式编程之参数详解 局部变量与全局变量作用域 递归 函数式编程与函数不同 高阶函数 第4周 上节内容回顾 心灵鸡汤 装饰器详解 装饰器应用详解 装饰器之函数即变量 装饰器之高阶函数 装饰器之嵌套函数 装饰器之...

    JAVA2实用教程(第5版)课后习题电子版

    - Socket编程:理解TCP和UDP协议,如何使用Socket和ServerSocket进行网络通信。 - URL和URLConnection:用于访问网络资源,进行HTTP请求。 8. Java的高级特性: - 注解(Annotation):提供元数据,用于代码编译...

    mysql数据库my.cnf配置文件

    注意:该参数值设置的过大反而会是服务器整体效率降低 ft_min_word_len = 4 # 分词词汇最小长度,默认4 transaction_isolation = REPEATABLE-READ # MySQL支持4种事务隔离级别,他们分别是: # READ-UNCOMMITTED, ...

    MFC单文档下的TCP客户端

    此外,考虑到TCP是阻塞式的,我们可能需要使用异步套接字(WSAAsyncSelect或WSAEventSelect)或者多路复用I/O(select/poll/epoll)来避免线程阻塞。这将允许客户端在等待数据的同时,响应用户界面的其他事件。 ...

    android 网络请求

    - 低级API:Android提供了Socket和HttpURLConnection作为低级API进行网络请求。开发者可以直接使用它们来构造请求,但这种方式较为复杂,通常不推荐新手使用。 - Apache HttpClient:虽然现在已被弃用,但在某些旧...

    Linux_Multi_Thread总结1

    其中,`pipe`和`socketpair`用于创建半双工通信管道,`shmget`和`shmat`用于共享内存,而`msgget`、`msgrcv`和`msgsnd`则用于消息队列。 4. **线程调度**: Linux内核采用抢占式调度策略,线程调度由内核负责。...

    dmc-sockets:Corona SDK 的异步 TCP 套接字

    创建TCP连接的步骤包括初始化socket对象、设置连接参数、发起连接请求,以及处理连接成功或失败的回调。例如,以下代码展示了如何连接到一个远程服务器: ```lua local socket = require("dmc_sockets") local ...

    iOS-面试宝典3.0.pdf

    一般情况下,耗时的操作不适合放在`NSNotificationCenter`中执行,因为这会导致主线程阻塞,影响用户体验。更好的做法是使用GCD或其他多线程技术将耗时操作放到后台线程执行。 #### 三、Foundation对象与Core...

    七彩虹主板_C.848P_v2.2_说明书

    #### 驱动程式安装说明 - **获取驱动程序**:可以从七彩虹官网下载最新的驱动程序,确保系统的最佳性能。 - **安装顺序**:建议先安装主板芯片组驱动,然后依次安装显卡、声卡等其他硬件驱动。 - **注意事项**:在...

    Java 实现实时监听文件夹是否有新文件增加并上传服务器功能

    在Java中,文件上传通常使用各种框架(如Apache Commons FileUpload、Spring的MultipartFile等)或者通过Socket编程实现自定义的上传协议。 5. 阻塞式IO流使用 阻塞式IO流是Java中实现文件操作的传统方式。以...

    新版Android开发教程.rar

    ----------------------------------- Android 编程基础 1 封面----------------------------------- Android 编程基础 2 开放手机联盟 --Open --Open --Open --Open Handset Handset Handset Handset Alliance ...

    PT80-NEAT开发指南v1.1

    NEAT 开 发 指南 文档 适用于 PT80 系列 移动数据终端 版本记录 版本号 版本描述 发布日期 V 1.0 初始版本。 2012-04-12 V1.1 修改前三章内容 2012-09-25 目录 第一章 关于本手册.....................................

Global site tag (gtag.js) - Google Analytics