You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
teamwk123/python/tcpserver4.py

92 lines
2.1 KiB

4 weeks ago
# @Coding: utf-8
# @Time: 2021/8/3 3:13
import socket
import os
import sys
#这个变量意思是ip由外部手动输入
HOST = "0.0.0.0"
PORT = 7777
#这段代码放在主机桌面上
so = socket.socket(socket.AF_INET, socket.SOCK_STREAM)# 建立Socket连接, AF_INEF说明使用IPv4地址, SOCK_STREAM指明TCP协议
so.bind((HOST, PORT))# 绑定IP和端口
so.listen(1)# 监听
#print(f"listen: {so.listen(1)} connected")
conn, addr = so.accept()# 接收TCP连接, 并返回新的Socket对象
#print(f"Client: {addr} connected")# 打印客户端的IP
message = "Connection Success"
conn.send(message.encode('utf8'))# 向客户端发送当前的时间, send()函数接收的参数为bytes类型,
#data = conn.recv(1024).decode()# 接收客户端发送的数据
#data1 = conn.recv(1024)# 接收客户端发送的数据
#print(data1)
#l=data.split(' ')
#step1:username
#d1=conn.recv(1024)
#l1=data1.split(b' ')
#l1=d1.split(b' ')
#print(l1)
#username=l1[1].decode()
#print('username:',username)
'''
if os.path.exists(path):
pass
else:
os.mkdir(path)
os.mkdir(path+"//"+username)
'''
if os.path.exists('C://Users//12691//Desktop//ui_ref//public//cloud_contents'):
pass
else:
os.mkdir('C://Users//12691//Desktop//ui_ref//public//cloud_contents')
#conn.send(b'username')
#step2:filename
d2=conn.recv(1024)
file = d2.decode()
filename = file.split(" ")[1]
#conn.send(b'filename')
print('filename:',filename)
conn.send(b'filename')
#step3:filesize
d3=conn.recv(1024)
l3=d3.split(b' ')
filesize=int(l3[1].decode())
#conn.send(b'filesize')
print('filesize:',filesize)
conn.send(b'filesize')
#step4:content
recvsize=0
f=open('C://Users//12691//Desktop//ui_ref//public//cloud_contents//'+filename,'wb')
while recvsize<filesize:
size = 0
if filesize-recvsize>1024:
size=1024
else:
size=filesize-recvsize
data=conn.recv(size)
datalen=len(data)
recvsize+=datalen
f.write(data)
#content1=l1[7]
#print('content:',content1)
f.close()
print("recvsize:",str(recvsize))
#f.close()
conn.close()# 关闭连接
'''
f.write(content1)
f.close()
'''