python SOCKET編程基礎入門
1.客戶端Client:發(fā)起訪問的一方。
2.服務器端
3.server段編程
(1)建立socket,socket是負責具體通信的一個實例
(2)綁定,為創(chuàng)建的socket指派固定的端口和IP地址
(3)接受對方發(fā)送內(nèi)容
(4)給對方發(fā)送反饋,此步驟為非必須步驟
4.Client端編程
(1)建立通信的socket
(2)發(fā)送內(nèi)容到指定服務器
(3)接受服務器給定的反饋內(nèi)容
5.模擬一下這個過程
(1)我們先建立一個服務器的函數(shù)
#服務器案例import socket#模擬服務器的函數(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 socketdef 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)我們先啟動服務器端函數(shù)
出現(xiàn)如下圖像,它是創(chuàng)建了一個sock,然后自己綁定到127.0.0.1:7852,運行到sock.recvfrom(500)這里死等客戶端發(fā)消息
(4)再啟動客戶端函數(shù)
出現(xiàn)如下發(fā)送編碼后的text內(nèi)容到服務器(127.0.0.1:7852),服務器成功接收后返回you are cool這句話。
(5)我們再看服務器的函數(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編程基礎入門的詳細內(nèi)容,更多關于python SOCKET編程的資料請關注好吧啦網(wǎng)其它相關文章!
相關文章:
1. python如何實現(xiàn)word批量轉HTML2. 利用單元測試對PHP代碼進行檢查3. Java8內(nèi)存模型PermGen Metaspace實例解析4. python excel和yaml文件的讀取封裝5. python3實現(xiàn)往mysql中插入datetime類型的數(shù)據(jù)6. python爬蟲實戰(zhàn)之制作屬于自己的一個IP代理模塊7. moment轉化時間戳出現(xiàn)Invalid Date的問題及解決8. App啟動優(yōu)化-Android性能優(yōu)化9. Django 權限管理(permissions)與用戶組(group)詳解10. Python編寫單元測試代碼實例
