一、UDP編程 1.客戶端Client:發起訪問的一方。 2.伺服器端 3.server段編程 (1)建立socket,socket是負責具體通信的一個實例 (2)綁定,為創建的socket指派固定的埠和IP地址 (3)接受對方發送內容 (4)給對方發送反饋,此步驟為非必須步驟 4.Client端 ...
一、UDP編程
1.客戶端Client:發起訪問的一方。
2.伺服器端
3.server段編程
(1)建立socket,socket是負責具體通信的一個實例
(2)綁定,為創建的socket指派固定的埠和IP地址
(3)接受對方發送內容
(4)給對方發送反饋,此步驟為非必須步驟
4.Client端編程
(1)建立通信的socket
(2)發送內容到指定伺服器
(3)接受伺服器給定的反饋內容
5.模擬一下這個過程
(1)我們先建立一個伺服器的函數
#伺服器案例 import socket #模擬伺服器的函數 def serverFunc(): #1.建立socket #socket.AF_INET:使用IPV4協議族 #socket.SOCK_DGRAM:使用UDP通信 sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #2.綁定ip和port #127.0.01:這個ip地址代表的是機器本身 #7852:隨機指定的埠號 #地址是一個tuple類型,(ip.port) addr = ("127.0.0.1",7852) sock.bind(addr) #接受對方消息 #等待方式為死等,沒有其他可能性 #recvfrom接受的返回值是一個元組,前一項表示數據,後一項表示地址 #參數的含義是緩衝區大小 #rst = sock.recvfrom(500) data,addr = sock.recvfrom(500) print(data) print(type(data)) #發送過來的數據是bytes格式,必須通過解碼才能得到str格式內容 #decode預設參數是utf8 text = data.decode() print(type(text)) print(text) #給對方反饋的消息 rsp = "I am very hungry now" #發送的數據需要編程成bytes格式 #預設時utf8 data = rsp.encode() sock.sendto(data,addr) if __name__ == "__main__": print("Start Server") serverFunc() print("End Server")
(2)然後創建一個客戶端的函數
import socket def clientFunc(): sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) text = "you are very cool" #發送的數據必須是bytes格式 data = text.encode() #發送 sock.sendto(data,("127.0.0.1",7852)) data,addr =sock.recvfrom(200) data = data.decode() print(text) if __name__ == "__main__": print("Start Client") clientFunc() print("End Client")
(3)我們先啟動伺服器端函數
出現如下圖像,它是創建了一個sock,然後自己綁定到127.0.0.1:7852,運行到sock.recvfrom(500)這裡死等客戶端發消息
(4)再啟動客戶端函數
出現如下發送編碼後的text內容到伺服器(127.0.0.1:7852),伺服器成功接收後返回you are cool這句話。
(5)我們再看伺服器的函數那裡
接受了bytes格式的字元串,並列印出來了,然後再解碼列印出來,最後把you are cool返回客戶端。
(6)這裡有個地方沒有辦法:因為我們在一臺電腦上做的測試,所以相當於自言自語,不如在兩臺電腦上進行試驗。
二、源碼
D33_1_ServerProgramme.py
D33_2_ClientProgramme.py
https://github.com/ruigege66/Python_learning/blob/master/D33_1_ServerProgramme.py
https://github.com/ruigege66/Python_learning/blob/master/D33_2_ClientProgramme.py
2.CSDN:https://blog.csdn.net/weixin_44630050(心悅君兮君不知-睿)
3.博客園:https://www.cnblogs.com/ruigege0000/
4.歡迎關註微信公眾號:傅里葉變換,個人公眾號,僅用於學習交流,後臺回覆”禮包“,獲取大數據學習資料