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

关于端口占用的疑问

  •  
  •   amrom · 2020-04-12 11:56:15 +08:00 · 1322 次点击
    这是一个创建于 1691 天前的主题,其中的信息可能已经有所发展或是发生改变。

    各位老哥,小弟最近遇到一个问题,关于操作系统的端口占用问题,我们一般和端口打交道都是直接使用的,什么 firewalld 和各种 web 服务直接监听了,但是具体是如何实现这个监听的呢? Google 了一圈,基本都是在说怎么样列出已经监听的端口和 Socket 监听,和我想要的不一样。各位老哥如果了解这方面的知识,希望给小弟指一条路。

    问题描述:如何占用一个操作系统的端口,最原生的方法,举个例子,使用 Linux 下的 shell 或者 windows 下的 bat 实现。

    已有思路:没有思路

    4 条回复    2020-04-12 13:00:04 +08:00
    amrom
        1
    amrom  
    OP
       2020-04-12 11:57:24 +08:00
    已有思路:操作系统级别的 API?
    GuuJiang
        2
    GuuJiang  
       2020-04-12 12:11:54 +08:00   ❤️ 2
    你要的简单版答案
    nc -l 9999
    命令不要退出,此时就占用了 tcp 的 9999 端口了

    其实你会提出这样的疑问,可能是你把端口当成了某种开关,所以期望有某个命令把它拨到“占用”状态,某个命令再拨到“未占用”状态,事实上“端口占用”是一个持续的状态,我们平时所谓的某个端口被占用,实际是指的某个应用程序在某个端口上 listen
    abcdabcd987
        3
    abcdabcd987  
       2020-04-12 12:18:52 +08:00
    azh7138m
        4
    azh7138m  
       2020-04-12 13:00:04 +08:00
    Unix 里面,bind 这个方法,第二个参数可以传 sockaddr,这个结构体里面有个成员是 sin_port,代表你要绑定 socket 到哪个端口

    文档就是楼上贴的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5989 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 02:17 · PVG 10:17 · LAX 18:17 · JFK 21:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.