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()

TCP的数据传输的更多相关文章

  1. TCP可靠数据传输

    TCP可靠数据传输   在TCP在IP不可靠的尽力而为的服务之上,创建了一条可靠数据传输服务(reliable data transfer service).TCP提供的可靠数据传输的方法涉及到可靠数 ...

  2. 动手学习TCP:数据传输

    前面的文章介绍了TCP状态变迁,以及TCP状态变迁图中的一些特殊状态. 本文主要看看TCP数据传输过程中需要了解的一些重要点: MSS(Maximum Segment Size) Seq号和Ack号的 ...

  3. 动手学习TCP:数据传输(转)

    前面的文章介绍了TCP状态变迁,以及TCP状态变迁图中的一些特殊状态. 本文主要看看TCP数据传输过程中需要了解的一些重要点: MSS(Maximum Segment Size) Seq号和Ack号的 ...

  4. TCP的数据传输小结

    TCP的交互数据流 交互式输入 通常每一个交互按键都会产生一个数据分组,也就是说,每次从客户传到服务器的是一个字节的按键(而不是每次一行) 经受时延的确认 通常TCP在接受到数据时并不立即发送ACK: ...

  5. 无连接运输的UDP、可靠数据传输原理、面向连接运输的TCP

    由[RFC 768]定义的UDP只是做了运输协议能够做的最少工作.除了复用/分解功能极少量的差错检测外,它几乎没有对IP增加别的东西.如果应用程序开发人员选择UDP而不是TCP,则该应用程序差不多就是 ...

  6. TCP的三次握手(建立连接)和四次挥手(关闭连接)

    参照: http://course.ccniit.com/CSTD/Linux/reference/files/018.PDF http://hi.baidu.com/raycomer/item/94 ...

  7. TCP/IP协议与UDP协议的区别

    TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接.一个TCP连接必须要经过三次“对话”才能建立起来, ...

  8. TCP协议与UDP协议的区别

    TCP协议与UDP协议的区别(转) 首先咱们弄清楚,TCP协议和UCP协议与TCP/IP协议的联系,很多人犯糊涂了,一直都是说TCP/IP协议与UDP协议的区别,我觉得这是没有从本质上弄清楚网络通信! ...

  9. TCP、UDP协议间的区别(转)

    一.TCP/IP协议是一个协议簇.里面包括很多协议的.UDP只是其中的一个.之所以命名为TCP/IP协议,因为TCP,IP协议是两个很重要的协议,就用他两命名了. TCP/IP协议集包括应用层,传输层 ...

随机推荐

  1. Ubuntu16 安装Jira

    参见:https://segmentfault.com/a/1190000008194333 https://www.ilanni.com/?p=12119烂泥:jira7.3/7.2安装.中文及破解 ...

  2. Chrome搜索设置

    https://encrypted.google.com/ncr https://encrypted.google.com/search?{google:RLZ}{google:acceptedSug ...

  3. C++、Java、JavaScript中的正则表达式

    C++(VS2013编译器):http://msdn.microsoft.com/zh-cn/library/bb982727.aspx#grammarsummary Java:            ...

  4. Linux上db2安装

    Linux上db2安装:https://blog.csdn.net/nayanminxing/article/details/69372283

  5. Tomcat的工作模式和运行模式

    (1)工作模式 Tomcat作为servlet容器,有三种工作模式: 1.独立的servlet容器,servlet容器是web服务器的一部分: 2.进程内的servlet容器,servlet容器是作为 ...

  6. idea+maven本地仓库更新问题

    在POM文件中将dependecy填好,.m2/repository/文件夹下也有相应的包下载了.但idea External Libraries就是引用不到这个包. 怎么mvn clean inst ...

  7. 《学习OpenCV3》目录和全书划分

    一 概述 1.   Overview. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ...

  8. 20145324 《Java程序设计》第5周学习总结

    20145324 <Java程序设计>第5周学习总结 教材学习内容总结 第八章 1.java中所有错误都会被包装成为对象 2.可以使用尝试(try)执行程序并捕捉代表错误的对象后做一些处理 ...

  9. Oracle查询一个表的数据插入到另一个表

    1. 新增一个表,通过另一个表的结构和数据 create table XTHAME.tab1 as select * from DSKNOW.COMBDVERSION 2. 如果表存在: insert ...

  10. JVM反调调用优化,导致发生大量异常时log4j2线程阻塞

    背景 在使用log4j2打日志时,当发生大量异常时,造成大量线程block问题的问题. 一个关于log4j2的高并发问题:https://blog.fliaping.com/a-high-concur ...