【问题标题】:How can I know, what local port is used by Stream?我怎么知道 Stream 使用了哪个本地端口?
【发布时间】:2011-04-30 17:40:12
【问题描述】:

是否可以明确指定net.Stream 应该使用的本地端口,或者找出用于连接的本地端口?

根据文档,无法指定本地端口:

stream.connect(port, host='127.0.0.1')

【问题讨论】:

  • 你想连接服务器,还是监听端口?
  • 我正在连接到服务器,并试图找出客户端套接字绑定到哪个本地端口
  • 真正的问题是:你想实现什么?远程方可以更好地确定您的端口号,因为在中间 NAT 和代理可能进行的所有修改之后,它会看到 IP 地址/端口号。
  • Scala Remote Actors 通信协议需要明确指定的本地端口——这正是我需要的。

标签: javascript sockets tcp node.js


【解决方案1】:
stream.connect(port, host='127.0.0.1')

列出具有指定端口的指定地址。

如果你想打开socket,你必须使用net.createConnection(port, host='127.0.0.1')http.createServer或类似的东西...... 在 Linux 中显示所有监听的套接字,输入 netstat -an

【讨论】:

  • 我想打开一个客户端套接字(不是服务器套接字,它对传出连接作出反应)。每个客户端套接字都绑定到一个本地端口,该端口用于接收来自服务器套接字的响应。我试图在运行时弄清楚使用了哪个端口。使用netstat -tlnp 可以确定客户端套接字使用哪个端口(通过进程ID),但我希望有一些不那么麻烦的东西。
  • 看起来无法通过 API 找出使用的本地端口,所以我必须使用 netstat -tlnp 通过进程 ID 获取它。
  • 你可以使用socket.localPort。
【解决方案2】:

根据 node.js 文档 (http://nodejs.org/api.html),没有公开的方法或变量可以提供您正在寻找的信息。我建议要么提交补丁 (http://nodejs.org/#contributing),要么通过邮件列表 (http://groups.google.com/group/nodejs) 提出请求。

【讨论】:

    【解决方案3】:

    如果您控制服务器,您可以要求它告诉您。不漂亮,但与您在尝试从 NAT 后面协商点对点连接时必须跳过的圈子不同。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-12
      • 2023-03-05
      • 1970-01-01
      • 1970-01-01
      • 2021-12-01
      • 2015-03-06
      • 1970-01-01
      相关资源
      最近更新 更多