python 写一个端口转发从而实现局域网内没有外网的电脑可以远程连接代码 请写出配置有外网和没外网的过程
时间: 2024-02-17 11:00:55 浏览: 176
为了实现局域网内没有外网的电脑可以远程连接,我们可以通过端口转发的方式来实现。下面是一个简单的 Python 脚本来实现端口转发:
```python
import socket
def forward(local_port, remote_port):
# 创建监听本地端口的 socket
local_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
local_socket.bind(('localhost', local_port))
local_socket.listen(1)
# 连接远程端口的 socket
remote_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
remote_socket.connect(('remote_host', remote_port))
# 开始转发数据
while True:
client_socket, addr = local_socket.accept()
remote_data = remote_socket.recv(1024)
while remote_data:
client_socket.send(remote_data)
remote_data = remote_socket.recv(1024)
client_data = client_socket.recv(1024)
while client_data:
remote_socket.send(client_data)
client_data = client_socket.recv(1024)
client_socket.close()
if __name__ == '__main__':
# 配置有外网
forward(8080, 80)
# 配置没有外网
forward(8080, 8888)
```
上述代码中,我们通过 `forward` 函数来实现端口转发。`local_port` 表示本地监听的端口号,`remote_port` 表示远程连接的端口号。同时,我们需要配置 `remote_host` 来指定远程主机的 IP 地址或域名。
如果我们的电脑有外网,我们可以将本地的 8080 端口映射到远程主机的 80 端口,这样我们就可以通过远程主机的 IP 地址或域名来访问我们本地的服务。
如果我们的电脑没有外网,我们可以将本地的 8080 端口映射到远程主机的 8888 端口,然后在远程主机上再次进行端口映射,将 8888 端口映射到外网上。这样就可以实现我们的目标了。
阅读全文