精品熟女碰碰人人a久久,多姿,欧美欧美a v日韩中文字幕,日本福利片秋霞国产午夜,欧美成人禁片在线观看

Python Socket程序

Python Socket程序

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

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

套接字是雙向通信通道的端點。套接字可以在一個進程內,同一臺機器上的進程之間或不同大陸上的進程之間進行通信。在python中使用套接字模塊來創建和使用套接字。

套接字有自己的詞匯表 :

編號 術語 描述
1 Domain 用作傳輸機制的協議系列。這些值是常量,例如:AF_INET,PF_INET,PF_UNIX,PF_X25等。
2 type 兩個端點之間的通信類型,通常是面向連接協議的SOCK_STREAM和無連接協議的SOCK_DGRAM。
3 protocol 通常為零,可用于標識域和類型內協議的變體。
4 hostname 網絡接口的標識符
5 port 每臺服務器偵聽在一個或多個端口上調用的客戶端。端口可以是Fixnum端口號,包含端口號的字符串或服務名稱。

Socket模塊

要創建套接字,必須使用套接字模塊中可用的socket.socket()函數,該函數具有以下常規語法:

 
# Filename : example.py
# Copyright : 2020 By Codebaoku
# Author by : www.090948.com
# Date : 2020-08-25
s = socket.socket (socket_family, socket_type, protocol=0)
 

這是參數的描述:

  • socket_family - 如前所述,它是AF_UNIX或AF_INET。
  • socket_type - 它是SOCK_STREAM或SOCK_DGRAM。
  • protocol - 通常忽略,默認為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服務器,我們使用套接字模塊中可用的套接字函數來創建套接字對象。然后使用套接字對象調用其他函數來設置套接字服務器。

現在調用bind(hostname,port)函數為給定主機上的服務指定一個端口。接下來,調用返回對象的accept方法。此方法將一直等到客戶端連接到您指定的端口,然后返回表示該客戶端連接的連接對象。

 
# Filename : example.py
# Copyright : 2020 By Codebaoku
# Author by : www.090948.com
# Date : 2020-08-25
#!/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.connect(hosname,port)在端口上打開到主機名的TCP連接。打開套接字后,可以像讀取任何IO對象一樣從中讀取套接字。完成后,記得關閉它,就像關閉文件一樣。

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

 
# Filename : example.py
# Copyright : 2020 By Codebaoku
# Author by : www.090948.com
# Date : 2020-08-25
#!/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上方運行以查看結果。

 
# Filename : example.py
# Copyright : 2020 By Codebaoku
# Author by : www.090948.com
# Date : 2020-08-25
# Following would start a server in background.
 $ python server.py & 
 # Once server is started run client as follows:
 $ python client.py
  
 

將產生以下結果 :

 
# Filename : example.py
# Copyright : 2020 By Codebaoku
# Author by : www.090948.com
# Date : 2020-08-25
Got connection from ('127.0.0.1', 48437)
 Thank you for connecting
  
 

公開網址的套接字

在下面的示例中,使用套接字模塊中的幾種方法來查找服務器的地址信息和主機名詳細信息。

 
# Filename : example.py
# Copyright : 2020 By Codebaoku
# Author by : www.090948.com
# Date : 2020-08-25
import socket
 from pprint import pprint
 # get server address
 addrinfo = socket.getaddrinfo('yapf.com', 'www')
 pprint(addrinfo)
 # get server hostname
 print socket.gethostname()
  
 

執行上面示例代碼,得到以下結果:

 
# Filename : example.py
# Copyright : 2020 By Codebaoku
# Author by : www.090948.com
# Date : 2020-08-25
 [(
    , 
     , 17,'',('59.110.239.6', 80)),
 (
      ,  
       , 6, '', ('59.110.239.6', 80))]

 

下一節:Python HTTP客戶端

Python 網絡編程

相關文章