python SOCKET編程基礎(chǔ)入門
一、UDP編程
1.客戶端Client:發(fā)起訪問的一方。
2.服務(wù)器端
3.server段編程
(1)建立socket,socket是負責具體通信的一個實例
(2)綁定,為創(chuàng)建的socket指派固定的端口和IP地址
(3)接受對方發(fā)送內(nèi)容
(4)給對方發(fā)送反饋,此步驟為非必須步驟
4.Client端編程
(1)建立通信的socket
(2)發(fā)送內(nèi)容到指定服務(wù)器
(3)接受服務(wù)器給定的反饋內(nèi)容
5.模擬一下這個過程
(1)我們先建立一個服務(wù)器的函數(shù)
#服務(wù)器案例
import socket
#模擬服務(wù)器的函數(shù)
def serverFunc():
#1.建立socket
#socket.AF_INET:使用IPV4協(xié)議族
#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接受的返回值是一個元組,前一項表示數(shù)據(jù),后一項表示地址
#參數(shù)的含義是緩沖區(qū)大小
#rst = sock.recvfrom(500)
data,addr = sock.recvfrom(500)
print(data)
print(type(data))
#發(fā)送過來的數(shù)據(jù)是bytes格式,必須通過解碼才能得到str格式內(nèi)容
#decode默認參數(shù)是utf8
text = data.decode()
print(type(text))
print(text)
#給對方反饋的消息
rsp = "I am very hungry now"
#發(fā)送的數(shù)據(jù)需要編程成bytes格式
#默認時utf8
data = rsp.encode()
sock.sendto(data,addr)
if __name__ == "__main__":
print("Start Server")
serverFunc()
print("End Server")
(2)然后創(chuàng)建一個客戶端的函數(shù)
import socket
def clientFunc():
sock = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
text = "you are very cool"
#發(fā)送的數(shù)據(jù)必須是bytes格式
data = text.encode()
#發(fā)送
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)我們先啟動服務(wù)器端函數(shù)
出現(xiàn)如下圖像,它是創(chuàng)建了一個sock,然后自己綁定到127.0.0.1:7852,運行到sock.recvfrom(500)這里死等客戶端發(fā)消息

(4)再啟動客戶端函數(shù)
出現(xiàn)如下發(fā)送編碼后的text內(nèi)容到服務(wù)器(127.0.0.1:7852),服務(wù)器成功接收后返回you are cool這句話。

(5)我們再看服務(wù)器的函數(shù)那里
接受了bytes格式的字符串,并打印出來了,然后再解碼打印出來,最后把you are cool返回客戶端。

(6)這里有個地方?jīng)]有辦法:因為我們在一臺電腦上做的測試,所以相當于自言自語,不如在兩臺電腦上進行試驗。
二、源碼
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
以上就是python SOCKET編程基礎(chǔ)入門的詳細內(nèi)容,更多關(guān)于python SOCKET編程的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
pytorch 實現(xiàn)多個Dataloader同時訓練
這篇文章主要介紹了pytorch 實現(xiàn)多個Dataloader同時訓練的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-05-05
Python使用PyAudio制作錄音工具的實現(xiàn)代碼
這篇文章主要介紹了Python使用PyAudio制作錄音工具,音頻錄制與視頻錄制相似,也是以數(shù)據(jù)幀的方式錄制保存,這次使用強大的第三方包PyAudio和內(nèi)置的wave模塊編寫,需要的朋友可以參考下2022-04-04
Python2.7環(huán)境Flask框架安裝簡明教程【已測試】
這篇文章主要介紹了Python2.7環(huán)境Flask框架安裝方法,結(jié)合實例形式詳細分析了Python2.7環(huán)境下安裝Flask框架遇到的問題與相關(guān)解決方法、注意事項,并給出了一個基本的測試示例,需要的朋友可以參考下2018-07-07
python矩陣的轉(zhuǎn)置和逆轉(zhuǎn)實例
今天小編就為大家分享一篇python矩陣的轉(zhuǎn)置和逆轉(zhuǎn)實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
使用Python自制數(shù)據(jù)庫備份工具實現(xiàn)數(shù)據(jù)定時覆蓋
這篇文章主要為大家詳細介紹了如何使用Python自制數(shù)據(jù)庫備份工具實現(xiàn)數(shù)據(jù)定時覆蓋功能,文中的示例代碼講解詳細,需要的小伙伴可以參考下2024-03-03

