6

我可以在同一台机器上使用简单的套接字通信

服务器:

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)

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

谢谢你

4

2 回答 2

2

如果您真的不需要在 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/

于 2012-08-22T10:24:03.947 回答
1

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

PS 还有一个脚本的线程版本的链接。

于 2012-07-05T19:07:51.577 回答