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协议的主要内容,如果未能解决你的问题,请参考以下文章