TCP的数据传输
TCP协议,传输控制协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
TCP通信需要经过创建连接、数据传送、终止连接三个步骤。
案例:利用TCP从服务器下载文件至客户端
案例分析:
客户端:
1、建立套接字
2、数据链接至服务器
3、发送要下载文件名称至服务器
4、接收服务器传来的数据,并保存至本地
5、关闭套接字
服务器:
1、建立套接字
2、转套接字状态由主动为被动
3、接收监听到的请求并保存、创建新的套接字
4、读取请求文件内容
5、新的套接字发送文件内容至客户端
6、关闭套接字
客户端TCP程序:
import socket
def main():
tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_client.connect((input("请输入服务器IP:"),int(input("请输入服务器port:"))))
data_file_name = input("请输入要下载的文件:")
tcp_client.send(data_file_name.encode("utf-8"))
with open("[复件]"+data_file_name,"wb") as f:
f.write(tcp_client.recv(1024))
tcp_client.close()
if __name__ == "__main__":
main()
服务器TCP程序:
import socket
def main():
tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
tcp_server.bind(("",8080))
tcp_server.listen(128)
new_tcp_server, client_addr = tcp_server.accept()
file_data = new_tcp_server.recv(1024)
content = None
try:
f = open(file_data.decode("utf-8"))
content = f.read("rb")
f.close()
except Exception:
print("对不起,你请求的文件(%s)不存在" % file_data)
if content:
new_tcp_server.send(content.encode("utf-8"))
print("下载成功!")
new_tcp_server.close()
tcp_server.close()
if __name__ == "__main__":
main()
最新文章
- css3制作旋转立方体相册
- SQLiteDatabase 基本操作
- Sample Apps by Android Team -- Amazed
- ListView中每个item条目在被单击选中时能够高亮显示
- spring c3p0数据库连接池连接配置
- [Bootstrap]全局样式(二)
- 读取tomcat下的文件夹路径
- PHP class_exists 检查类是否已定义
- Hibernate中HQL的日期差值计算,可计算相差多少秒
- 如何让vnc控制由默认的twm界面改为gnome?(转)
- rman 使用catalog备份的演示
- R语言实战(五)方差分析与功效分析
- 学习笔记TF051:生成式对抗网络
- James Munkres Topology: Sec 22 Exer 3
- java 11 值得关注的新特性
- python面向对象编程 -- 封装、继承
- vue 工作学习总结
- ES中文分词器之精确短语匹配(解决了match_phrase匹配不全的问题)
- 单因素方差分析(One Way ANOVA)
- Docker Container的概述
热门文章
- Spark高级数据分析· 3推荐引擎
- xxxx interview问题解读与总结
- Python高阶函数(Map、Reduce、Filter)和lambda函数一起使用 ,三剑客
- cogs 539. 牛棚的灯
- 【前端】jQuery实现锚点向下平滑滚动特效
- Commons FileUpload
- HTTP协议Keep-Alive模式详解和HTTP头字段总结
- JDK 中的监控与故障处理工具-02 (jps)
- AngularJS Injector和Service的工作机制
- eclipse创建文件package,source folder和folder区别及相互转换