zoukankan      html  css  js  c++  java
  • 关于服务端开发的整理

    1.当recv返回值为0是表示对方已经正常(msdn说是完美的)的断开连接.

    2.当recv返回socket_error时,说明对方已经断开连接,但是可能是非正常断开(断网或者客户端进程结束).


    服务端Socket如何释放客户端连接的资源 0 悬赏园豆:20 [待解决问题] 浏览: 682次 一个请求/应答模式的Socket应用,作为服务端接收客户端的请求数据,然后响应客户端,采用异步监听和异步接收方式。现在的问题是如何判断一个客户端是否已经关闭了,还有就是如何释放客户端连接请求过来的Socket所占用的资源。因为在运行的时候服务端Socket的进程内存占用一直在飙升,到最后就是导致服务挂掉。求帮助,求解答。。。 .NET技术.NET Framework john chen | 初学一级 | 园豆:180 提问于:2011-11-08 01:43 < > 找优秀程序员,就在博客园 收藏 所有回答(2) 0 其实在客户端关闭的时候,服务端会一直收到一个空字节,然后服务端就一直死在那里了,这个时候就要在服务端做一个判断了,如果收到空字节时就应该把与客户端连接的套接字关闭,这么就没什么问题了; 释放客户端请求的资源就看你用到了什么了就在上面那个判断里面添加释放的代码

      

    补充一点
    
    最好显式调用shudown(fd, flag)
    close有时候会意外(只有最后一次CLOSE才调用shutdown)
    不然的话很容易发生FIN_WAIT1, FIN_WAIT2还有CLOSE_WAIT的
    
    我曾经搞过10000个CLOSE_WAIT
    服务程序被愤怒的内核杀掉
    

      

  • 相关阅读:
    docker固定IP地址重启不变
    关于 CentOS 7 里面 普通用户 Ulimit max user processes 值的问题
    CentOS tengine mysql 5.7 php 5.6
    strace 分析 跟踪 进程错误
    WPF中的字体改善
    C#数据类型-string
    WPF中的文字修饰
    Winform与WPF对话框(MessageBox, Dialog)之比较
    WPF中将四个数字字符串值(比如:"10,10,300,300")转为Rect
    WPF中嵌入Flash(ActiveX)
  • 原文地址:https://www.cnblogs.com/cfas/p/3150564.html
Copyright © 2011-2022 走看看