使用 Python 套接字傳送字串
在本文中,我們將介紹套接字、套接字中的內建方法、伺服器和客戶端,以及如何在 Python 中實現與套接字的成功通訊。套接字在伺服器端和客戶端之間起著橋樑的作用,用於接收和傳送資料。
在 Python 程式碼中,我們將建立套接字,在套接字的幫助下,我們將傳遞字串並在客戶端和伺服器之間建立連線。
Python 中的套接字
套接字定義為為接收和傳送資料而構建的端點。單個網路中有兩個套接字;套接字中存在 IP 地址和埠的組合。
單個裝置有 n 個基於埠號的套接字。不同型別的埠可用於不同的協議。
以下是一些標準埠號及其協議。
協議 | 描述 |
---|---|
HTTP |
它的埠號是 80,它的 Python 庫是 httplib 、urllib 和 xmlrpclib 。HTTP 埠用於網頁。 |
FTP |
它的埠號是 20,它的 Python 庫是 ftplib 和 urllib 。此埠用於檔案傳輸。 |
NNTP |
它的埠號是 119,它的 Python 庫是 nntplib 。此埠用於未傳送的訊息。 |
SMTP |
它的埠號是 25,它的 Python 庫是 smtplib 。此埠用於傳送電子郵件。 |
TELNET |
它的埠號是 23,它的 Python 庫是 telnetlib 。此埠用於命令列。 |
Pop3 |
它的埠號是 110,它的 Python 庫是 poplib 。此埠用於獲取電子郵件。 |
Gopher |
它的埠號是 70,它的 Python 庫是 gopherlib 。此埠用於檔案傳輸。 |
在 Python 中實現套接字的內建方法
我們必須匯入 Socket
模組或框架以在 Python 中實現套接字。所有這些模組都包含內建方法,這些方法有助於建立套接字並有助於相互關聯。
以下是一些強大的套接字內建方法:
Socket.socket()
方法建立套接字。雙方都需要它,例如客戶端和伺服器端。Socket.accept()
用於接受連線。Socket.accept()
方法返回一對值,例如 (conn, address)。Socket.bind()
用於繫結指定為引數的地址。Socket.close()
表示套接字已關閉。Socket.connect()
用於連線作為引數指定的地址。Socket.listen()
用於偵聽伺服器或客戶端中的命令。
Socket 程式設計中的客戶端和伺服器
下面,你將瞭解套接字程式設計中客戶端和伺服器的含義。
客戶
從伺服器接收資訊或資料的計算機或軟體稱為客戶端。客戶端向伺服器請求服務; Web 瀏覽器是客戶端的最佳示例。
伺服器
伺服器是用於管理網路資源的程式、計算機或裝置。伺服器可以是同一裝置、本地計算機或遠端計算機。
在 Python Socket 中使用客戶端-伺服器通訊傳送字串
我們將建立兩個檔案用於從 Python 檔案中的套接字進行通訊——一個用於伺服器端,另一個用於客戶端。並且將有兩個用於建立連線的程式。
Python Socket 中的伺服器端
我們將首先建立伺服器端程式碼。我們將使用內建方法來建立伺服器端程式碼。
伺服器端的程式碼如下。
import socket
s = socket.socket(
socket.AF_INET, socket.SOCK_STREAM
) # Socket will create with TCP and IP protocols
# This method will bind the sockets with server and port no
s.bind(("localhost", 9999))
s.listen(1) # Will allow a maximum of one connection to the socket
c, addr = s.accept() # will wait for the client to accept the connection
print("CONNECTION FROM:", str(addr)) # Will display the address of the client
c.send(
b"HELLO, Are you enjoying programming?/Great! Keep going"
) # Will send message to the client after encoding
msg = "Take Care.............."
c.send(msg.encode())
c.close() # Will disconnect from the server
輸出:
This connection is from: ('127.0.0.1', 50802)
Python Socket 中的客戶端
客戶端將訊息傳送到伺服器,伺服器將響應該訊息。客戶端還將在程式碼中使用內建方法。
在客戶端,我們將首先建立一個套接字。然後我們將連線主機的 IP 地址和埠號。
程式碼:
import socket
s = socket.socket(
socket.AF_INET, socket.SOCK_STREAM
) # Socket will create with TCP and, IP protocols
s.connect(("localhost", 9999)) # Will connect with the server
# Will receive the reply message string from the server at 1024 B
msg = s.recv(1024)
while msg:
print("Received:" + msg.decode())
msg = s.recv(1024) # Will run as long as the message string is empty
s.close() # Will disconnect the client
輸出:
The message is Revived: HELLO, Are you enjoying programming? Great! Keep going
The message is Revived: Take Care..............
當給定的程式碼執行時,將在伺服器和客戶端之間建立連線。連線後,客戶端螢幕將顯示一條訊息。
訊息將是:
HELLO, Are you enjoying programming? Great! Keep going
另一條訊息將是:
Take Care..............
此訊息將顯示在客戶端,因為它是由伺服器端傳送的。這樣,程式碼將執行並給出通過 Python 中的套接字傳送字串的輸出。
Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.
LinkedIn