使用 Python 套接字傳送字串

Zeeshan Afridi 2023年1月30日
  1. Python 中的套接字
  2. 在 Python 中實現套接字的內建方法
  3. Socket 程式設計中的客戶端和伺服器
  4. 在 Python Socket 中使用客戶端-伺服器通訊傳送字串
使用 Python 套接字傳送字串

在本文中,我們將介紹套接字、套接字中的內建方法、伺服器和客戶端,以及如何在 Python 中實現與套接字的成功通訊。套接字在伺服器端和客戶端之間起著橋樑的作用,用於接收和傳送資料。

在 Python 程式碼中,我們將建立套接字,在套接字的幫助下,我們將傳遞字串並在客戶端和伺服器之間建立連線。

Python 中的套接字

套接字定義為為接收和傳送資料而構建的端點。單個網路中有兩個套接字;套接字中存在 IP 地址和埠的組合。

單個裝置有 n 個基於埠號的套接字。不同型別的埠可用於不同的協議。

以下是一些標準埠號及其協議。

協議 描述
HTTP 它的埠號是 80,它的 Python 庫是 httpliburllibxmlrpclib。HTTP 埠用於網頁。
FTP 它的埠號是 20,它的 Python 庫是 ftpliburllib。此埠用於檔案傳輸。
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 Afridi
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn

相關文章 - Python Socket