怎么在python中利用tcp在局域网中传输文件

怎么在python中利用tcp在局域网中传输文件?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

功能:

怎么在python中利用tcp在局域网中传输文件

可以利用python创建的TCP客户端从我们自己搭建的TCP服务器上下载文件。

实现需求:

安装socket模块 简单了解sokcet模块用法

服务器代码如下:

importsocket

deffile_deal(file_name):
#定义函数用于处理用户索要下载的文件
try:
#二进制方式读取
files=open(file_name,"rb")

mes=files.read()

except:


print("没有该文件")

else:

files.close()

returnmes

defmain():
#创建套接字
tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#固定端口号
tcp_socket.bind(("",8888))
#将主动套接字转为被动套接字
tcp_socket.listen(128)

whileTrue:
#利用accept获取分套接字以及客户端的地址
client_socket,client_addr=tcp_socket.accept()
#接收客户端的数据
file_name=client_socket.recv(4096)
#调用函数处理用户下载的文件
mes=file_deal(file_name)

ifmes:
#如果文件不为空发送

client_socket.send(mes)
#关闭分套接字

client_socket.close()

if__name__=="__main__":
main()

importsocket


deffile_deal(file_name):
#定义函数用于处理用户索要下载的文件
try:
#二进制方式读取
files=open(file_name,"rb")

mes=files.read()

except:


print("没有该文件")

else:

files.close()

returnmes

defmain():
#创建套接字
tcp_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#固定端口号
tcp_socket.bind(("",8888))
#将主动套接字转为被动套接字
tcp_socket.listen(128)

whileTrue:
#利用accept获取分套接字以及客户端的地址
client_socket,client_addr=tcp_socket.accept()
#接收客户端的数据
file_name=client_socket.recv(4096)
#调用函数处理用户下载的文件
mes=file_deal(file_name)

ifmes:
#如果文件不为空发送

client_socket.send(mes)
#关闭分套接字

client_socket.close()


if__name__=="__main__":
main()

客户端代码:

fromsocketimport*
importos

defmain():
#建立套接字
tcp_socket=socket(AF_INET,SOCK_STREAM)
#接收用输入的服务器端的ip和端口
tcp_ip=input("请输入ip:")

tcp_port=int(input("请输入端口:"))
#连接服务器
tcp_socket.connect((tcp_ip,tcp_port))
#输入要下载的文件名
file_name=input("请输入要下载的文件名:")

#将文件名发送至服务器端
tcp_socket.send(file_name.encode())
#创建一个空文件
new_file=open(file_name,"wb")
#用与计算读取的字节数
time=0

whileTrue:
#接收服务器端返回的内容
mes=tcp_socket.recv(4096)
#如果内容不为空执行
ifmes:
#解码并向文件内写入
new_file.write(mes.decode())

#计算字节
time+=len(mes)

else:
#如果字节数为空即未收到内容
iftime==0:
#关闭文件
new_file.close()
#删除刚刚创建的文件
os.remove(file_name)
print("没有您要下载的文件")
else:
#如过time有值时name文件传输完成
print("文件下载成功")

break
#关闭套接字
tcp_socket.close()


if__name__=='__main__':
main()

看完上述内容,你们掌握怎么在python中利用tcp在局域网中传输文件的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注恰卡编程网行业资讯频道,感谢各位的阅读!

发布于 2021-03-21 22:38:04
收藏
分享
海报
0 条评论
157
上一篇:怎么在CSS3中使用line-clamp属性控制文本行数 下一篇:如何在Python中使用descriptor描述符
目录

    推荐阅读

    0 条评论

    本站已关闭游客评论,请登录或者注册后再评论吧~

    忘记密码?

    图形验证码