【问题标题】:Are there simple descriptions on port forwarding using python?有没有关于使用python进行端口转发的简单描述?
【发布时间】:2012-07-06 04:49:07
【问题描述】:

我可以使用

在同一台机器上进行简单的套接字通信

服务器:

import socket

s = socket.socket()
host = socket.socket()
port = 8000
s.bind((host,port))
s.listen(5)
while true:
     c,addr = s.accept()
     print 'got connection from', addr
     c.send('thank you for connecting')
     c.close()

客户:

import socket 

s = socket.socket()
host=socket.gethostname()
port = 8000
s.connect((host,port))
print s.recv(1024)

如果要在我的笔记本电脑和我工作的私人服务器之间进行通信,需要进行哪些更改?我从搜索中发现,端口转发是最好的方法,但没有找到任何解释或教程。

谢谢

【问题讨论】:

  • host = socket.socket() 可能是复制粘贴错误
  • 我不知道如何转发端口,所以我不确定它是否可行。此时我会尝试任何方法。
  • 为什么不能在客户端代码中直接使用host = 'your server'?

标签: python sockets networking port


【解决方案1】:

如果你真的不需要在 python 中这样做,只需使用 netcat:-

http://netcat.sourceforge.net/

端口转发或端口映射 在 Linux 上,NetCat 可用于端口转发。以下是在 NetCat 中进行端口转发的九种不同方法(但不支持 -c 开关 - 这些与 netcat 的“ncat”化身一起使用):

nc -l -p port1 -c ' nc -l -p port2'
nc -l -p port1 -c ' nc host2 port2'
nc -l -p port1 -c ' nc -u -l -p port2'
nc -l -p port1 -c ' nc -u host2 port2'
nc host1 port1 -c ' nc host2 port2'
nc host1 port1 -c ' nc -u -l -p port2'
nc host1 port1 -c ' nc -u host2 port2'
nc -u -l -p port1 -c ' nc -u -l -p port2'
nc -u -l -p port1 -c ' nc -u host2 port2'

来源:-http://en.wikipedia.org/wiki/Netcat#Port_Forwarding_or_Port_Mapping

它通常是大多数 *nix 发行版的标准配置,并且还有一个 Win32 端口:-

http://www.stuartaxon.com/2008/05/22/netcat-in-windows/

【讨论】:

    【解决方案2】:

    如果您关心 Python 端口转发实现,有一个古老但很棒的 ActiveState 配方,它仅使用 Python 标准库(socket、asyncore)实现异步端口转发服务器。你可以戳code.activestate.com。

    附: 还有一个指向脚本线程版本的链接。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-01
      • 1970-01-01
      • 2012-07-28
      • 1970-01-01
      • 2012-06-03
      • 2011-11-29
      • 1970-01-01
      • 2012-07-02
      相关资源
      最近更新 更多