发送一个文件,要保证文件的完整性,选择tcp连接
分为A和B两个程序,A负责接收文件,B负责发送文件
接收文件脚本:
from socket import *
#create socket
sock = socket(AF_INET,SOCK_STREAM,0)
#BIND
sock.bind(('192.168.10.1',8888))
#listen
sock.listen(5)
print('waitting for connect...')
while True:
#accept
sock_c, addr_c = sock.accept()
print('{} has connect.'.format(addr_c))
#rec,send
f = open('d:\ip1.log', 'wb')
while True:
data = sock_c.recv(128)
if not data:
break
f.write(data)
f.close()
#close
sock_c.close()
sock.close()
发送文件脚本:
from socket import *
import sys
alarm = 'run the script as: python xxxx.py /path/filename'
if len(sys.argv) < 2:
print(alarm)
#create
sock_client = socket(AF_INET, SOCK_STREAM, 0)
#connect
sock_client.connect(('192.168.10.1',8888))
#send
file = sys.argv[1]
f = open(file, 'rb')
while True:
msg = f.read(128)
if not msg:
break
sock_client.send(msg)
f.close()
sock_client.close()
执行
发送端执行(Linux):python tcp_client.py new.txt
接收端生成文件(Windows): d:\ip1.log