tcp客户端从服务器下载文本文件
代码讲解:
server
import socket def send_file_client(new_client_socket, new_client_addr):
# 接收客户端需要下载的文件名
file_name = new_client_socket.recv(1024).decode('gbk')
print('客户端' + str(new_client_addr) + '需要下载的文件是: ' + file_name)
# 打开文件读取数据
file_data = None
try:
file = open(file_name, 'rb')
file_data = file.read()
file.close()
except:
print('没有要下载的文件' + file_name)
if file_data:
new_client_socket.send(file_data) def main():
# 创建套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定服务器ip和port
local_addr = ('', 8000)
tcp_socket.bind(local_addr)
# 监听
tcp_socket.listen(128)
print('等待客户端接入...')
# 等待客户端接入
new_client_socket, new_client_addr = tcp_socket.accept()
print(str(new_client_addr) + ': ' + '接入...')
# 调用函数发送数据给客户端
send_file_client(new_client_socket, new_client_addr)
# 关闭套接字
new_client_socket.close()
tcp_socket.close() if __name__ == '__main__':
main()
client
import socket def main():
# 创建套接字
tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 服务器ip和port
server_ip = input('服务器ip: ') # 192.168.6.206
server_port = int(input('服务器port: '))
# 链接服务器
tcp_socket.connect((server_ip, server_port))
# 需要下载的文件
download_file_name = input('需要下载的文件名: ')
# 发送文件名
tcp_socket.send(download_file_name.encode('gbk'))
# 接收文件
recv_data = tcp_socket.recv(1024*1024)
if recv_data:
with open(download_file_name, 'wb') as file:
file.write(recv_data)
else:
print('没有该文件')
# 关闭套接字
tcp_socket.close() if __name__ == '__main__':
main()
注意:该程序仅能发送文本文件,其他类型请自己更改代码
tcp客户端从服务器下载文本文件的更多相关文章
- [JAVA] Tcp客户端和服务器简单代码
服务器: import java.io.DataInputStream; import java.io.DataOutputStream; import java.io.IOException; im ...
- Java实验四 TCP客户端和服务器的应用
实验内容 1.掌握Socket程序的编写: 2.掌握密码技术的使用: 3.设计安全 4.对通信内容进行摘要计算并验证 实验步骤 1.信息安全传送: 发送方A——————>接收方B A加密时,用B ...
- WCF客户端从服务器下载数据
1.打开VS选择控制台项目新建一个解决方案Server,然后添加两个类库Contract和Service. 2.在Contract中添加一个接口IFileDownload using System; ...
- TCP客户端和服务器间传输数据遇到的TypeError: a bytes-like object is required, not 'str'问题
使用python实现python核心编程3第472页和474页的TCP时间戳服务器和客户端服务器间数据传输编程时遇到TypeError: a bytes-like object is required ...
- Socket TCP客户端和服务器的实现
import java.io.*; import java.net.Inet4Address; import java.net.InetSocketAddress; import java.net.S ...
- TCP客户端与服务器的实现
为了更容易理解,我们举一个小例子来说明服务器与客户端之间的连接过程. 有一个饭店,饭店里有服务员,服务员用于招待客人 特别要注意的是:要记住相关函数的各个参数都是什么,什么时候返回SOCKET_ERR ...
- 基于Qt的tcp客户端和服务器实现摄像头帧数据处理(客户端部分)
项目简述 实现客户端调用摄像头,并以帧的形式将每一帧传输到服务端,服务端将图片进行某些处理后再返回给客户端.(客户端与服务端通信代码部分参考<Qt5 开发及实例>) 项目步骤 客户端的编写 ...
- --系统编程-网络-tcp客户端服务器编程模型、socket、htons、inet_ntop等各API详解、使用telnet测试基本服务器功能
PART1 基础知识 1. 字节序 网络字节序是大端字节序(低地址存放更高位的字节), 所以,对于字节序为小端的机器需要收发网络数据的场景,要对这些数据进行字节序转换. 字节序转换函数,常用的有四个: ...
- unp TCP 客户端服务器回射程序中对SIGCHLD信号的处理
第五章中,有一个例子模拟客户端并发的终止TCP连接,服务器捕捉并处理SIGCHLD信号并调用waitpid函数防止僵死进程的出现.信号处理函数中核心的一句是: , &statloc, WNOH ...
随机推荐
- Codeforces 1296F Berland Beauty
题目链接:http://codeforces.com/problemset/problem/1296/F 思路: 1————2————3————4————5————6 1->3 2 2-> ...
- Codeforces_711_B
http://codeforces.com/problemset/problem/711/B 比较简单,过程有点繁琐,先找一行包含那个0的行,得到和,以此填出0位置的值,然后判断这个矩阵是否符合条件. ...
- OsgEearh 中的 FeatureEditor的实现原理
先来看看FeatureEditor的用法: const osgEarth::SpatialReference* mapSRS = mapNode->getMapSRS(); osgEarth:: ...
- xdebug插件攻击
title: xdebug插件攻击 date: 2017-09-30 17:08:38 tags: 前一阵突然看到一个有关于xdebug的一个攻击面,不得不说这个想法还是很有意思的.自己搭环境记录一下 ...
- Spring Boot集群管理工具KafkaAdminClient
能与原理介绍 在Kafka官网中这么描述AdminClient:The AdminClient API supports managing and inspecting topics, brokers ...
- 虚拟机ubuntu的网络连接类型
图很好 https://jingyan.baidu.com/article/91f5db1b17e8a01c7f05e3e6.html 很详细,有实例 https://www.cnblogs.com/ ...
- Eclipse 无法引用到Maven 解决方法
问题描述:打开Eclipse进入java EE视图下,发现原有的Maven Dependencies目录不存在,显示的是org.maven.ide.eclipse.MAVEN2_CLASSPATH_C ...
- [MacOS-Memcached]安装
查看memcached信息 $ brew info memcached memcached: stable 1.5.22 (bottled), HEAD High performance, distr ...
- 学习CSS之如何改变CSS伪元素的样式
一.CSS伪元素 CSS 伪元素用于向某些选择器设置特殊效果. 伪元素的用法如下: selector:pseudo-element {property:value;} CSS 类也可以和伪元素搭配使用 ...
- Qps从300到1500的优化过程
最近压测一项目,遇到的性能问题比较典型,过程记录下来,给大家做定位调优参考: 表象: 单接口负载测试,qps最高到300,响应时间200ms,应用cpu达到90%以上,8c机器,如下图,写到这里可能有 ...