TCP协议

Posted wangxiongbing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了TCP协议相关的知识,希望对你有一定的参考价值。

TCP通信的特点:安全,可靠 
TCP通信的过程:创建连接(三次握手) + 发送数据 + 断开连接(四次挥手)

  三次握手(对话模式)
    A>>我要发数据了
    B>>你发吧
    A>>我发了

  四次挥手(对话模式)
    A>>我数据发完了
    B>>嗯
    B>>已全部收到
    A>>我断开了

  ---个人记忆法

用socket实现文件(文本文档,图片,视频)的上传和下载
1.客户端给服务器发送一个文件名,服务器去当前文件中去查找这个文件夹,并把他的内容读取出来,发送个客户端,客户端接受并保存
客户端:
 1 import socket
 2 from threading import Thread
 3 
 4 def main():
 5     tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
 6     tcp_client.connect(("192.168.15.37", 8080))  # 服务器的端口和地址一个tuple的形式
 7 
 8     data = input("请输入要下载的文件名:")
 9     tcp_client.send(data.encode("utf-8"))
10     info = tcp_client.recv(1024 * 1024)
11     print(info)   # 只能打印utf-8编码内的
12     if info:
13         with open("T" + data, "wb") as file:
14             file.write(info)
15     tcp_client.close()
16 
17 if __name__ == __main__:
    #创建一个线程用来多次连接
18 for i in range(10): 19 t = Thread(target=main(), args=(i,)) 20 t.start() 21 t.join()

 


服务端
 1 import socket
 2 
 3 def send_file_2_client(new_client_socket, client_addr):
 4     filename = new_client_socket.recv(1024).decode("utf-8")
 5     print("客户端%s需要下载的文件是%s" % (str(client_addr), filename))
 6     file_content = None
 7     try:
 8         file = open(filename, "rb")
 9         file_content = file.read()
10         file.close()
11     except Exception as e:
12         print("当前没有这个文件%s" % str(e))
13     if file_content:
14         new_client_socket.send(file_content)
15 def main():
16     tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
17     tcp_server.bind(("192.168.15.23", 9001))
18     tcp_server.listen(128)
19     while True:
20         new_client_socket, client_addr = tcp_server.accept()  # accept返回的是一个新的socket的通信new_client_socket和一个地址client_addr
21         send_file_2_client(new_client_socket, client_addr)  # 调用文件发送数据方法
22         new_client_socket.close()
23     tcp_server.close()

 











以上是关于TCP协议的主要内容,如果未能解决你的问题,请参考以下文章

深入理解TCP协议及其源代码

深入理解TCP协议及其源代码

深入理解TCP协议及其源代码

深入理解TCP协议及其源代码

深入理解TCP协议及其源代码

深入理解TCP协议及其源代码