python socket 完成簡單的通信

coldplay.xixi
發布: 2020-12-25 17:29:19
轉載
6231 人瀏覽過

python教學專欄介紹socket的通訊方法

python socket 完成簡單的通信

##推薦(免費):python教學

#socket的介紹

socket又稱“套接字”,socket會透過udp/tcp協定來發送數據,用來實現兩台機器的簡單通訊。

注意:如果要用socket實作兩台機器的簡單通信,請先確保這兩台機器連入同一個局部網路。當然,socket也可以實現一台機器的通信,你只需要把連接對象ip設定為127.0.0.1,也就是本機ip。

實例

這裡只展示部分實用的函數。


函數#描述 socket.socket()socket.bind()socket.recv()socket.send()socket.close()socket.connect()socket.listen()
建立一個套接字
綁定到一個ip和連接埠上,傳入參數為元組
接受資料
傳送資料
關閉套接字
連接到一個ip和連接埠上
開啟tcp連接埠上監聽模式

socket.accept()

阻塞,等待連接

#機器之間的通訊功能

socket服務端

讓我們建立一個叫做socket_server.py,然後輸入以下程式碼:

import socket
server = socket.socket()server.bind(('0.0.0.0',80))server.listen()sock,addr = server.accept()data = ""while True:
    tmp_data = sock.recv(1024)
    if tmp_data:
        data += tmp_data.decode("utf8")
    else:
        breakprint('%s发送的内容:%s'%(addr[0],data))sock.close()
登入後複製

這裡我們建立了一個套接字,綁定到了0.0.在0.0:80的位址上,這個位址也可以改成我們本機的名稱。然後我們就開始監聽模式,使用者連線之後,就開始接受資料(注意:在接受資料之前要進行utf8解碼)。 socket客戶端

創建完socket_server.py之後,我們就能建立我們的客戶端了。讓我們建立一個叫做socket_client.py的文件,然後輸入以下程式碼:

import socket
client = socket.socket()client.connect(('127.0.0.1',80))client.send("Hello,Server.".encode("utf8"))client.close()
登入後複製

這裡我們就只講以下connect和send這兩個函數。 connect函數我們傳入了個元組,當然列表也行。第一個元素需要是連接的物件ip,第二個就是連接埠。連接完之後,我們就是用send函數來進行發送訊息,在發送之前,我們需要先把內容編碼為utf8類型。

對一個網站發送資料#########我們建立一個叫socket_website.py的文件,輸入以下程式碼:###
import socket
s.connect(('www.baidu.com',443))s.send('HELLO'.encode('utf8'))s.close()
登入後複製
###這裡,我們對baidu.com發送了數據,由於百度是https協議的,所以我們用443埠。如果程式碼沒有報錯的話,就表示發送成功了。這時候,百度的資料庫就會多了一段叫HELLO的文字內容資料。 #########tip:如果不停的用socket向一個網站或機器發送數據,數據太多就會導致目標的資料庫/機器記憶體爆滿,導致崩潰。這實現了簡單的傳說中的ddos攻擊######

以上是python socket 完成簡單的通信的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:learnku.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板