Ich lese ein Netzwerk Buch und von dem, was ich über das TCP-Protokoll gelesen habe, stellt es sicher, dass die Daten gesendet werden. Ich möchte etwas Code schreiben, um eine Dateiübertragung durchzuführen. Vor dem bekommen, die ich in den Python-Dokumente lesen auch diese Passage:kann TCP wirklich die Lieferung garantieren?
„Anwendungen sind dafür verantwortlich, dass alle Daten gesendet wurde, wenn nur ein Teil der Daten übertragen wurde, muss die Anwendung versuchen, Lieferung der restlichen Daten "
Dies scheint zu widersprechen, was ich im Netzwerkbuch gelesen habe. Der obige Abschnitt besagt, dass Anwendungen für die verlorenen Daten verantwortlich sind.
ich so sein Unverständnis kann ich ein paar Fragen stellen will:
1-Wenn ich, dass die Daten überprüfen, warum dann TCP gesendet werden?
2-Ich habe im Netzwerkbuch gelesen, dass TCP die Berechnungen durchführt, um sicherzustellen, dass die Daten vorhanden sind. Warum nutzt TCP dann keine Zeitverschwendung?
3- Die Python-Dokumente haben keine Puffergröße angegeben. Was ist die maximale Größe des zu sendenden Puffers?
4-Ich las im Netzwerkbuch, dass der Server die Menge der Daten erhöhen kann, die es senden kann, wenn es weiß, dass der Client es empfangen kann. kann dies die Größe des Puffers mehr als die maximale Anzahl ändern?
Hier mein Code Versuch ist so weit:
Server Code:
import socket
s = socket.socket()
host = socket.gethostname()
port = 3000
s.bind((host,port))
s.listen(1)
c,addr = s.accept()
with open("Filetosend","rb") as File:
data= File.read(1024)
while data:
c.send(data)
data = File.read(1024)
s.close()
Client-Code:
import socket
s= socket.socket()
host = socket.gethostname()
port = 3000
s.connect((host,port))
with open("Filetowrite","wb") as File:
data = s.recv(1024)
while data:
File.write(data)
data = s.recv(1024)
s.close()
Es ist erwähnenswert das Verhalten des Systems 'write()' Aufruf, der nicht garantiert, dass der gesamte Puffer gesendet wird. Ich habe das starke Gefühl, dass die erwähnte Dokumentation darauf verweist. – ArturFH