python-day27(三次握手,四次揮手)
阿新 • • 發佈:2018-11-22
一. Osi七層
二. 三次握手 四次揮手(重點)
3次握手: A約嗎>>>B約啊>>>A收到
4次揮手: A分手吧>>>B讓我考慮下>>>.B分吧>>>>A再見
三. Tcp和Udp的區別
TCP(Transmission Control Protocol)可靠的、面向連線的協議(eg:打電話)、傳輸效率低全雙工通訊(傳送快取&接收快取)、面向位元組流。
使用TCP的應用:Web瀏覽器;檔案傳輸程式。
UDP(User Datagram Protocol)不可靠的、無連線的服務,傳輸效率高(傳送前時延小),一對一、一對多、多對一、多對多、
面向報文(資料包),盡最大努力服務,無擁塞控制。使用UDP的應用:域名系統 (DNS);視訊流;IP語音(VoIP)。
四. Tcp和Udp協議下socket撰寫方式
Tcp服務端,客戶端
1 import socket 2 3 server = socket.socket() 4 ip_port = ('192.168.15.46',8001) 5 server.bind(ip_port) 6 7 server.listen() 8 9 conn,addr = server.accept() 10 11 while1: 12 server_msg = input('wulaoban>>') 13 server_msg = server_msg.encode('utf-8') 14 conn.send(server_msg) 15 16 from_client_msg = conn.recv(1024) #1024是一次性最大能接收的訊息長度 17 from_client_msg = from_client_msg.decode('utf-8') 18 print(from_client_msg) 19 20 conn.close() 21 server.close()
1 import socket 2 3 client = socket.socket() 4 5 server_ip_port = ('192.168.15.46',8001) 6 7 client.connect(server_ip_port) 8 9 while 1: 10 from_server_msg = client.recv(1024) 11 from_server_msg = from_server_msg.decode('utf-8') 12 print('來自服務端的訊息',from_server_msg) 13 client_msg = input('客戶端>>>>') 14 client_msg = client_msg.encode('utf-8') 15 client.send(client_msg)View Code
Udp服務端,客戶端
1 import socket 2 3 udp_server = socket.socket(type=socket.SOCK_DGRAM) #datagram 資料包的意思 4 ip_port = ('192.168.15.49',8001) 5 udp_server.bind(ip_port) 6 print(1111) 7 from_client_msg,server_addr = udp_server.recvfrom(1024) #訊息資料型別都是bytes型別,阻塞 8 print(22222) 9 print(from_client_msg.decode('utf-8')) 10 print(server_addr) 11 udp_server.sendto(b'hello what?',server_addr) 12 13 14 udp_server.close()View Code
1 import socket 2 3 udp_client = socket.socket(type=socket.SOCK_DGRAM) 4 server_ip_port = ('192.168.15.49',8001) 5 6 udp_client.sendto(b'hello',server_ip_port) #c引數1:傳送的訊息,引數2往哪裡發,對方的地址 7 8 from_server_msg,server_addr = udp_client.recvfrom(1024) 9 10 print(from_server_msg.decode('utf-8')) 11 udp_client.close()View Code
五. 緩衝區