<li id="oyjrt"><acronym id="oyjrt"></acronym></li>
  • <rp id="oyjrt"></rp>

    <em id="oyjrt"><acronym id="oyjrt"></acronym></em>

      葵花寶典教程,一個自學編程平臺

      葵花寶典教程,一個自學編程平臺

      Python - 網絡編程

      Python 提供了對網絡服務的兩個級別的訪問。在底層,您可以訪問底層操作系統中的基本套接字支持,這允許您為面向連接和無連接協議實現客戶端和服務器。


      Python 也有提供對特定應用程序級網絡協議(如 FTP、HTTP 等)的更高級別訪問的庫。


      本章讓您了解網絡中最著名的概念——套接字編程。


      什么是套接字?

      套接字是雙向通信通道的端點。套接字可以在進程內、同一臺機器上的進程之間或不同大陸上的進程之間進行通信。


      套接字可以通過多種不同的通道類型實現:Unix 域套接字、TCP、UDP 等等。套接字庫提供了用于處理公共傳輸的特定類以及用于處理其余部分的通用接口。


      套接字有自己的詞匯 -


      編號 術語和說明

      1

      領域


      用作傳輸機制的協議族。這些值是常量,例如 AF_INET、PF_INET、PF_UNIX、PF_X25 等。


      2

      類型


      兩個端點之間的通信類型,通常 SOCK_STREAM 用于面向連接的協議,SOCK_DGRAM 用于無連接協議。


      3

      協議


      通常為零,這可用于識別域和類型內的協議變體。


      4

      主機名


      網絡接口的標識符 -


      一個字符串,可以是主機名、點分四組地址或冒號(也可能是點)表示法的 IPV6 地址


      一個字符串“<broadcast>”,它指定一個 INADDR_BROADCAST 地址。


      一個零長度字符串,它指定 INADDR_ANY,或


      一個整數,解釋為主機字節順序的二進制地址。


      5

      港口


      每臺服務器都偵聽調用一個或多個端口的客戶端。端口可以是 Fixnum 端口號、包含端口號的字符串或服務名稱。


      插座模塊_

      要創建套接字,您必須使用套接字模塊中可用的socket.socket()函數,該函數具有一般語法 -


      s = socket.socket (socket_family, socket_type, protocol=0)

      這是參數的描述 -


      socket_family - 如前所述,這是 AF_UNIX 或 AF_INET。


      socket_type - 這是 SOCK_STREAM 或 SOCK_DGRAM。


      協議- 這通常被忽略,默認為 0。


      一旦你有了套接字對象,你就可以使用所需的函數來創建你的客戶端或服務器程序。以下是所需的功能列表 -


      服務器套接字方法

      編號 方法和說明

      1

      s.bind()


      此方法將地址(主機名、端口號對)綁定到套接字。


      2

      s.listen()


      此方法設置并啟動 TCP 偵聽器。


      3

      s.accept()


      這被動地接受 TCP 客戶端連接,等待連接到達(阻塞)。


      客戶端套接字方法

      編號 方法和說明

      1

      s.connect()


      該方法主動發起 TCP 服務器連接。


      通用套接字方法

      編號 方法和說明

      1

      s.recv()


      此方法接收 TCP 消息


      2

      s.send()


      此方法傳輸 TCP 消息


      3

      s.recvfrom()


      該方法接收UDP消息


      4

      s.sendto()


      此方法傳輸 UDP 消息


      5

      s.close()


      此方法關閉套接字


      6

      socket.gethostname()


      返回主機名。


      一個簡單的服務器

      為了編寫 Internet 服務器,我們使用 socket 模塊中可用的socket函數來創建一個 socket 對象。然后使用套接字對象調用其他函數來設置套接字服務器。


      現在調用bind(hostname, port)函數來為給定主機上的服務指定一個端口。


      接下來,調用返回對象的accept方法。此方法一直等到客戶端連接到您指定的端口,然后返回一個連接對象,該對象表示與該客戶端的連接。


      #!/usr/bin/python           # This is server.py file


      import socket               # Import socket module


      s = socket.socket()         # Create a socket object

      host = socket.gethostname() # Get local machine name

      port = 12345                # Reserve a port for your service.

      s.bind((host, port))        # Bind to the port


      s.listen(5)                 # Now wait for client connection.

      while True:

         c, addr = s.accept()     # Establish connection with client.

         print 'Got connection from', addr

         c.send('Thank you for connecting')

         c.close()                # Close the connection

      一個簡單的客戶端

      讓我們編寫一個非常簡單的客戶端程序,它打開到給定端口 12345 和給定主機的連接。使用 Python 的socket模塊函數創建一個 socket 客戶端非常簡單。


      socket.connect(hosname, port)在port上打開一個到hostname的 TCP 連接。一旦你打開了一個套接字,你就可以像任何 IO 對象一樣讀取它。完成后,記得關閉它,就像關閉文件一樣。


      以下代碼是一個非常簡單的客戶端,它連接到給定的主機和端口,從套接字讀取任何可用數據,然后退出 -


      #!/usr/bin/python           # This is client.py file


      import socket               # Import socket module


      s = socket.socket()         # Create a socket object

      host = socket.gethostname() # Get local machine name

      port = 12345                # Reserve a port for your service.


      s.connect((host, port))

      print s.recv(1024)

      s.close()                     # Close the socket when done

      現在在后臺運行這個 server.py,然后在 client.py 上面運行以查看結果。


      # Following would start a server in background.

      $ python server.py & 


      # Once server is started run client as follows:

      $ python client.py

      這將產生以下結果 -


      Got connection from ('127.0.0.1', 48437)

      Thank you for connecting

      Python 互聯網模塊

      Python網絡/互聯網編程中一些重要模塊的列表。


      協議 常用功能 端口號 Python 模塊

      HTTP 網頁 80 httplib、urllib、xmlrpclib

      NNTP 新聞網新聞 119 nntplib

      FTP 文件傳輸 20 ftplib, urllib

      SMTP 發送電子郵件 25 smtplib

      POP3 獲取電子郵件 110 流行音樂庫

      IMAP4 獲取電子郵件 143 imaplib

      遠程登錄 命令行 23 遠程登錄庫

      地鼠 文件傳輸 70 gopherlib, urllib

      請檢查上述所有庫以使用 FTP、SMTP、POP 和 IMAP 協議。


      進一步閱讀

      這是 Socket 編程的快速入門。這是一個廣闊的主題。建議通過以下鏈接查找更多詳細信息 -


      Unix 套接字編程。


      Python 套接字庫和模塊。


      第9條葵花寶典
      == ==

      Copyright www.texaschild-custody.com Rights Reserved葵花寶典教程.鄂icp2022001145號-1

      分享:

      支付寶

      微信

      亚洲日韩一级无码A片
      <li id="oyjrt"><acronym id="oyjrt"></acronym></li>
    1. <rp id="oyjrt"></rp>

      <em id="oyjrt"><acronym id="oyjrt"></acronym></em>