Python - 套接字程式設計
阿新 • • 發佈:2018-12-27
Python提供兩種級別的網路服務訪問。在較低級別,您可以訪問底層作業系統中的基本套接字支援,這允許您為面向連線的協議和無連線協議實現客戶端和伺服器。
Python還具有庫,可以提供對特定應用程式級網路協議的更高級別訪問,例如FTP,HTTP等。
套接字是雙向通訊通道的端點。套接字可以在程序內,同一臺機器上的程序之間或不同的程序之間進行通訊。我們在python中使用socket模組來建立和使用套接字。
術語 | 描述 |
---|---|
Domain | 用作傳輸機制的協議族。這些值是常量,如AF_INET,PF_INET,PF_UNIX,PF_X25等。 |
type | 兩個端點之間的通訊型別,通常是面向連線的協議的SOCK_STREAM和無連線協議的SOCK_DGRAM。 |
protocol | 通常為零,這可以用於識別域內的協議的變體和型別。 |
hostname | 網路介面的識別符號 ,一個字串,可以是主機名,點分四地址或冒號(可能是點)表示法中的IPV6地址,字串“”,指定INADDR_BROADCAST地址。零長度字串,指定INADDR_ANY或一個整數,按主機位元組順序解釋為二進位制地址。 |
port | 每個伺服器偵聽在一個或多個埠上呼叫的客戶端。埠可以是Fixnum埠號,包含埠號的字串或服務名稱。 |
socket Module
要建立套接字,必須使用套接字模組中提供的socket.socket()函式,該函式具有一般語法 -
s = socket.socket (socket_family, socket_type, protocol=0)
伺服器套接字方法
-
s.bind()
此方法將地址(主機名,埠號對)繫結到套接字。 -
s.listen()
此方法設定並啟動TCP偵聽器。 -
s.accept()
這被動地接受TCP客戶端連線,等待連線到達(阻塞)。
客戶端套接字方法
- s.connect()
此方法主動啟動TCP伺服器連線。
通用套接字方法
-
s.recv()
此方法接收TCP訊息 -
s.send()
該方法傳輸TCP訊息 -
s.recvfrom()
此方法接收UDP訊息 -
s.sendto()
該方法傳送UDP訊息 -
S.CLOSE()
此方法關閉套接字 -
socket.gethostname()
返回主機名。
例如
server
import socket
s = socket.socket()
host = socket.gethostname()
print(host)
port = 12345
s.bind(("127.0.0.1", port))#("host", port)
s.listen(5)
while True:
c, addr = s.accept()
print('Got connection from', addr)
c.send(b'Thank you for connecting')
c.close()
client
import socket
s = socket.socket()
host = socket.gethostname()
port = 12345
s.connect(("127.0.0.1", port))#("host", port)
print(s.recv(1024))
s.close()