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目录下是进程打开或使用的文件的符号连接。

  • 相关阅读:
    MongoDB 释放磁盘空间 db.runCommand({repairDatabase: 1 })
    RK 调试笔记
    RK Android7.1 拨号
    RK Android7.1 移植gt9271 TP偏移
    RK Android7.1 定制化 itvbox 盒子Launcher
    RK Android7.1 双屏显示旋转方向
    RK Android7.1 设置 内存条作假
    RK Android7.1 设置 蓝牙 已断开连接
    RK Android7.1 进入Camera2 亮度会增加
    RK 3128 调触摸屏 TP GT9XX
  • 原文地址:https://www.cnblogs.com/losophy/p/9522522.html
Copyright © 2011-2022 走看看