Ich habe diesen Python-Code, der nur funktioniert, wenn TCP_IP localhost ist. Wenn ich es zu einer anderen Server-IP für z.B. 23.21.167.61 dann kann die Datei nicht gesendet werden, auch wenn der andere Server abhört.Bindung statt Verbindung zu IP
import socket
from threading import Thread
from SocketServer import ThreadingMixIn
TCP_IP = 'localhost'
TCP_PORT = 9001
BUFFER_SIZE = 1024
class ClientThread(Thread):
def __init__(self,ip,port,sock):
Thread.__init__(self)
self.ip = ip
self.port = port
self.sock = sock
print " New thread started for "+ip+":"+str(port)
def run(self):
filename='mytext.txt'
f = open(filename,'rb')
while True:
l = f.read(BUFFER_SIZE)
while (l):
self.sock.send(l)
#print('Sent ',repr(l))
l = f.read(BUFFER_SIZE)
if not l:
f.close()
self.sock.close()
break
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(5)
print "Waiting for incoming connections..."
(conn, (ip,port)) = tcpsock.accept()
print 'Got connection from ', (ip,port)
newthread = ClientThread(ip,port,conn)
newthread.start()
threads.append(newthread)
for t in threads:
t.join()
Ich bekomme einen Fehler beim Binden an IP. Ich kann Methode verbinden, aber dann werde ich nicht in der Lage sein, die Vorteile von Einfädeln zu nehmen, wie hier ... http://www.bogotobogo.com/python/python_network_programming_server_client_file_transfer.php
[[email protected] ec2-user]# python server2.py
Traceback (most recent call last):
File "server2.py", line 34, in <module>
tcpsock.bind((TCP_IP, TCP_PORT))
File "/usr/lib64/python2.7/socket.py", line 228, in meth
return getattr(self._sock,name)(*args)
socket.error: [Errno 99] Cannot assign requested address
Es sieht so aus, als ob Sie Ihre Seite eines Sockets an eine externe Adresse binden. Das wird nicht funktionieren. Kannst du klarstellen, was du hier erreichen willst? –
Ich muss Dateien von vielen Servern auf den zentralen Server kopieren. Ich denke, dies kann mit Threading erreicht werden, wie im Tutorial gezeigt. – shantanuo