1. Socket 基本概念
在網絡編程中,socket 是一個通信端點。它允許程序發送和接收數據。根據通信協議的不同,socket 可以分為以下幾種類型:
- 流式 socket (SOCK_STREAM) :提供可靠的雙向連接,如 TCP。
- 數據報 socket (SOCK_DGRAM) :提供不可靠的雙向連接,如 UDP。
2. 創建 Socket
在 Python 中,我們使用 socket 模塊來創建 socket。以下是創建一個 TCP socket 的基本步驟:
import socket
# 創建 socket 對象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
這里,socket.AF_INET 表示使用 IPv4 地址,socket.SOCK_STREAM 表示使用 TCP 協議。
3. 綁定 Socket
在服務器端,我們需要將 socket 綁定到一個特定的地址和端口上,以便客戶端可以連接到它。
# 綁定到地址和端口
s.bind(('localhost', 12345))
4. 監聽連接
服務器端需要監聽連接請求。
# 開始監聽,參數指定最大連接數
s.listen(5)
5. 接受連接
服務器端接受客戶端的連接請求。
# 接受連接,返回一個新的 socket 對象和客戶端地址
client_socket, addr = s.accept()
print(f"Connected by {addr}")
6. 發送數據
使用 send 方法發送數據。
# 發送數據
message = 'Hello, client!'
client_socket.send(message.encode('utf-8'))
7. 接收數據
使用 recv 方法接收數據。
# 接收數據
data = client_socket.recv(1024)
print(f"Received: {data.decode('utf-8')}")
8. 關閉連接
完成通信后,關閉 socket。
# 關閉連接
client_socket.close()
s.close()
9. 客戶端連接
客戶端連接到服務器的步驟如下:
# 創建 socket 對象
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 連接到服務器
s.connect(('localhost', 12345))
# 發送數據
s.send('Hello, server!'.encode('utf-8'))
# 接收數據
data = s.recv(1024)
print(f"Received: {data.decode('utf-8')}")
# 關閉連接
s.close()
10. 異常處理
在網絡編程中,異常處理是非常重要的。我們需要處理可能發生的各種異常,如連接錯誤、超時等。
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('localhost', 12345))
s.send('Hello, server!'.encode('utf-8'))
data = s.recv(1024)
print(f"Received: {data.decode('utf-8')}")
except socket.error as e:
print(f"Socket error: {e}")
finally:
s.close()
11. 總結
通過上述步驟,我們了解了如何使用 Python 的 socket 庫來發送和接收數據。這包括創建 socket、綁定、監聽、接受連接、發送和接收數據以及關閉連接。在實際應用中,我們還需要考慮異常處理和錯誤處理,以確保程序的健壯性。
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
數據
+關注
關注
8文章
7335瀏覽量
94754 -
Socket
+關注
關注
1文章
214瀏覽量
36907 -
端口
+關注
關注
4文章
1104瀏覽量
33962 -
網絡編程
+關注
關注
0文章
73瀏覽量
11107
發布評論請先 登錄
相關推薦
熱點推薦
使用lwip socket udp功能,開發板為客戶端時不能夠接收服務器端發送過來的數據 ?
請教下,使用 lwip socket udp 功能,開發板為客戶端時不能夠接收服務器端發送過來的數據 ?
1,如果開發板為 服務器端,收發都可以
2,如果開發板為 客戶端,不能夠
發表于 04-16 06:01
cc3200 UDP同一個socket發送可以,接收失敗?
cc3200 UDP同一個socket發送可以,接收失敗,為什么同一個socket不行??用兩個socket,一個負責
發表于 03-11 16:39
CH395 Socket3 Socket4 Socket5 配置成TCP_Client,Socket4 Socket5不能接收數據怎么解決?
CH395 Socket3 Socket4 Socket5 配置成TCP_Client,只有Socket3能正常收發數據,
發表于 10-17 06:14
使用安卓Socket實現發送接收數據WiFi轉串口連接單片機實現控制的程序
本文檔的主要內容詳細介紹的是使用安卓Socket實現發送接收數據WiFi轉串口連接單片機實現控制的程序免費下載。
發表于 08-13 17:32
?6次下載
實現安卓Socket連接實現發送和接收數據的程序免費下載
本文檔的主要內容詳細介紹的是實現安卓Socket連接實現發送和接收數據的openwrt wifi轉串口連接單片機實現控制程序免費下載。
發表于 06-04 17:53
?0次下載
socket的基本概念和原理
Socket是一種通信協議,用于在網絡中實現進程間的通信。它是一種抽象的編程接口,允許應用程序通過網絡發送和接收數據。 1. 什么是Socket
什么是socket編程 socket與tcp/ip協議的關系
協議族定義了數據在網絡中如何傳輸,而socket則提供了一個編程接口,使得開發者可以編寫代碼來發送和接收
C語言中的socket編程基礎
Socket編程簡介 Socket是一種通信機制,允許程序之間進行通信。在C語言中,socket編程是網絡編程的基礎。通過使用socket,程序可以
socket 編程基礎入門
Socket 編程基礎入門 在計算機網絡中,Socket 是一個抽象層,它將網絡通信的細節隱藏起來,為開發者提供了一個簡單的接口來發送和接收數據
socket 在物聯網中的應用
不同的計算機程序在網絡中進行通信。它基于TCP/IP協議,提供了一種可靠的、面向連接的通信方式。在物聯網中,Socket使得設備能夠發送和接收數據,實現遠程控制和監控。 2.
socket 和 UDP 協議的對比
。 Socket 定義 Socket 是一個抽象層,它提供了一種方式,使得應用程序能夠發送和接收數據。在網絡編程中,
socket 發送和接收數據方法
評論