zoukankan      html  css  js  c++  java
  • 网络异常查找

    服务器如何知道客户端异常断开连接?

    心跳:

    在服务器端可以采用SetSockOpt来设置keepalive属性,同时修改注册表,这样出现客户端异常退出的时候,服务器端就能够知道,并且上报应用层

     

    time_wait状态与FIN状态

    首先启动socket服务端,然后用客户端进行连接,用netstat –ant命令查看目前套接字的状态:

    发现客户端和服务器的套接字都进入了established状态,说明客户端和服务端都正常工作,此时我们在服务端输入Ctrl+C终端服务端程序,再次输入netstat–ant命令,这是就看到了服务端进入了FIN_WAIT2状态,而客户端进入了CLOSE_WAIT状态。

     关于断开套接字断开连接时的四次握手在这里不再赘述,而这个FIN_WAIT2状态就是服务端在主动发起断开的连接请求时,发送FIN并收到客户端的ACK进入的等待客户端FIN的状态;而与FIN_WAIT2相对的FIN_WAIT1就是服务端发送完成FIN后还未接收到客户端返回的ACK时进入的状态,这个状态时长很短,在我本机上无法捕捉;这个CLOSE_WAIT状态是客户端接受到服务端的FIN并发送ACK后,等待用户手动关闭套接字的状态。

       此时如果关闭客户端的套接字,直接在客户端输入Ctrl+C,服务端就会进入我们熟悉的TIME_WAIT状态:

     

    参考:

    服务器如何知道客户端异常断开连接

    TIME_WAIT、FIN_WAIT1、FIN_WAIT2和CLOSE_WAIT状态的区别

    https://blog.csdn.net/u013616945/article/details/77510925

    tcp连接状态分析

    https://wenku.baidu.com/view/dae0af8814791711cd791795.html

    http://zheming.wang/blog/2013/08/18/4417B74D-F037-414A-A291-CEF7B3CD511D/

    服务器TIME_WAIT和CLOSE_WAIT详解和解决办法

    你所不知道的TIME_WAIT和CLOSE_WAIT

    Linux下通过进程名查询占用的端口

    1、首先根据名称用ps命令查看进程ID:

    ps -ef | grep zookeeper    

    2、查到进程ID之后,使用netstat命令查看其占用的端口:

    netstat -anp | grep 10997    

    windows
    netstat -aon|findstr "49157"

    3、查找进程运行的完整路径

    通过pstop命令查看进程信息时,只能查到相对路径,查不到的进程的详细信息,如绝对路径等。这时,我们需要通过以下的方法来查看进程的详细信息:

    Linux在启动一个进程时,系统会在/proc下创建一个以PID命名的文件夹,在该文件夹下会有我们的进程的信息,其中包括一个名为exe的文件即记录了绝对路径,通过llls –l命令即可查看。

    ll /proc/PID

    cwd符号链接的是进程运行目录;

    exe符号连接就是执行程序的绝对路径;

    cmdline就是程序运行时输入的命令行命令;

    environ记录了进程运行时的环境变量;

    fd目录下是进程打开或使用的文件的符号连接。

  • 相关阅读:
    Django框架
    Django框架
    Django框架
    Django框架
    Bootstrap框架
    前端之jQuery
    前端之BOM和DOM
    Flask框架配置管理
    lement-ui、接口、restful规范、drf、跨域问题
    Vue项目入口与小知识总结
  • 原文地址:https://www.cnblogs.com/losophy/p/9522522.html
Copyright © 2011-2022 走看看