久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      python socket 完成簡單的通信

      python教程欄目介紹socket的通信方法

      python socket 完成簡單的通信

      推薦(免費):python教程

      socket的介紹

      socket又稱“套接字”,socket會通過udp/tcp協(xié)議來發(fā)送數(shù)據(jù),用來實現(xiàn)兩臺機器的簡單通信。

      注意:如果要用socket實現(xiàn)兩臺機器的簡單通信,請先確保這兩臺機器連入同一個局部網(wǎng)中。當然,socket也可以實現(xiàn)一臺機器的通信,你只需要把連接對象ip設(shè)置為127.0.0.1,也就是本機ip。

      實例

      這里只展示部分實用的函數(shù)。

      函數(shù) 描述
      socket.socket() 創(chuàng)建一個套接字
      socket.bind() 綁定到一個ip和端口上,傳入?yún)?shù)為元組
      socket.recv() 接受數(shù)據(jù)
      socket.send() 發(fā)送數(shù)據(jù)
      socket.close() 關(guān)閉套接字
      socket.connect() 連接到一個ip和端口上
      socket.listen() 開啟tcp端口上監(jiān)聽模式
      socket.accept() 阻塞,等待連接

      機器之間的通信功能

      socket服務(wù)端

      讓我們創(chuàng)建一個叫做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發(fā)送的內(nèi)容:%s'%(addr[0],data))sock.close()

      這里我們創(chuàng)建了一個套接字,綁定到了0.0.0.0:80的地址上,這個地址也可以改成我們本機的名稱。然后我們就開始監(jiān)聽模式,用戶連接之后,就開始接受數(shù)據(jù)(注意:在接受數(shù)據(jù)之前要進行utf8解碼)。

      socket客戶端

      創(chuàng)建完socket_server.py之后,我們就能創(chuàng)建我們的客戶端了。讓我們創(chuàng)建一個叫做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這兩個函數(shù)。connect函數(shù)我們傳入了個元組,當然列表也行。第一個元素需要是連接的對象ip,第二個就是端口。連接完之后,我們就是用send函數(shù)來進行發(fā)送消息,在發(fā)送之前,我們需要先把內(nèi)容編碼為utf8類型。

      對一個網(wǎng)站發(fā)送數(shù)據(jù)

      我們創(chuàng)建一個叫socket_website.py的文件,輸入以下代碼:

      import socket s.connect(('www.baidu.com',443))s.send('HELLO'.encode('utf8'))s.close()

      這里,我們對baidu.com發(fā)送了數(shù)據(jù),由于百度是https協(xié)議的,所以我們用443端口。如果代碼沒有報錯的話,就說明發(fā)送成功了。這個時候,百度的數(shù)據(jù)庫就會多了一段叫HELLO的文本內(nèi)容數(shù)據(jù)。

      tip:如果不停的用socket向一個網(wǎng)站或機器發(fā)送數(shù)據(jù),數(shù)據(jù)太多就會導致目標的數(shù)據(jù)庫/機器內(nèi)存爆滿,導致崩潰。這就實現(xiàn)了簡單的傳說中的ddos攻擊

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號-2    滬公網(wǎng)安備31011702889846號