1. 程式人生 > >python-day27(三次握手,四次揮手)

python-day27(三次握手,四次揮手)

一. 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 while
1: 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()
View Code
 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

五. 緩衝區