【发布时间】:2017-07-13 21:39:24
【问题描述】:
我有一个 vpn(使用 OpenVPN),有多个客户端连接到服务器(在 DigitalOcean)。连接非常好,当它们通过 ssh 连接到各自的路由器时,我可以访问放置在各自防火墙后面的每个客户端。我想使用 python 脚本自动将文件从多个客户端发送到服务器,反之亦然。这是我目前使用的代码:
服务器:
#!/usr/bin/env python
import socket
from threading import Thread
from SocketServer import ThreadingMixIn
class ClientThread(Thread):
def __init__(self,ip,port):
Thread.__init__(self)
self.ip = ip
self.port = port
print "[+] New thread started for "+ip+":"+str(port)
def run(self):
while True:
data = conn.recv(2048)
if not data: break
print "received data:", data
conn.send(data) # echo
TCP_IP = '0.0.0.0'
TCP_PORT = 62
BUFFER_SIZE = 1024 # Normally 1024
tcpsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcpsock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
tcpsock.bind((TCP_IP, TCP_PORT))
threads = []
while True:
tcpsock.listen(4)
print "Waiting for incoming connections..."
(conn, (ip,port)) = tcpsock.accept()
newthread = ClientThread(ip,port)
newthread.start()
threads.append(newthread)
for t in threads:
t.join()
客户:
#!/usr/bin/env python
import socket
TCP_IP = '10.8.0.1'
TCP_PORT = 62
BUFFER_SIZE = 1024
MESSAGE = "Hello, World!"
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((TCP_IP, TCP_PORT))
s.send(MESSAGE)
data = s.recv(BUFFER_SIZE)
s.close()
print "received data:", data
问题是我无法获得连接。服务器只打印“等待传入连接...”,客户端似乎没有找到通往服务器的路。有没有人可以看看这个并给我一些关于我做错了什么的反馈?
【问题讨论】:
标签: python sockets vpn data-transfer