V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
unt
V2EX  ›  问与答

如何监听已经被占用的端口(假设是 888,大家发发发)

  •  
  •   unt · 2022-09-15 14:29:35 +08:00 · 1290 次点击
    这是一个创建于 799 天前的主题,其中的信息可能已经有所发展或是发生改变。
    nc 应该监听不了,显示绑定失败。
    windows 下用 Socket Tool 监听,没有报错,netstat 查出来有两条记录:
    1. ****:888 java.exe
    2. 内网 ip:888 socket tool.exe
    那这究竟算不算监听成功,因为我用客户机往它发消息它并没有收到。


    另外 linux 服务器如何监听已被占用的 UDP 端口
    5 条回复    2022-09-15 16:21:46 +08:00
    wudicgi
        1
    wudicgi  
       2022-09-15 14:36:33 +08:00
    pcap 抓包?
    villivateur
        2
    villivateur  
       2022-09-15 14:38:51 +08:00 via Android
    linux 有一个 tcpdump 的工具,但 udp 不知道行不行
    pcmid
        3
    pcmid  
       2022-09-15 15:44:01 +08:00 via iPhone
    linux 可以使用 SO_REUSEPORT 来监听同一个端口,不过可能不符合 op 的要求,请求会被负载均衡到每一个 fd 上
    cubecube
        4
    cubecube  
       2022-09-15 15:45:01 +08:00
    @villivateur 可以得,tcpdump 是直接在 3 层监听的
    dilu
        5
    dilu  
       2022-09-15 16:21:46 +08:00
    你说的这个不算监听成功,因为一个 socket 链接是一个五元组,即源 ip 源端口 协议 目的 ip 目的端口

    你的两个端口看似一样,但是源 ip 不一样

    你可以同时在 127.0.0.1:8080 和 0.0.0.0:8080 上监听,但是这两个不是同一个 socket 。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   973 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 19:59 · PVG 03:59 · LAX 11:59 · JFK 14:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.