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文章
7239瀏覽量
90979 -
Socket
+關注
關注
1文章
212瀏覽量
35542 -
端口
+關注
關注
4文章
1044瀏覽量
32709 -
網絡編程
+關注
關注
0文章
72瀏覽量
10534
發布評論請先 登錄
使用lwip socket udp功能,開發板為客戶端時不能夠接收服務器端發送過來的數據 ?
cc3200 UDP同一個socket發送可以,接收失敗?
CH395 Socket3 Socket4 Socket5 配置成TCP_Client,Socket4 Socket5不能接收數據怎么解決?
使用安卓Socket實現發送接收數據WiFi轉串口連接單片機實現控制的程序

實現安卓Socket連接實現發送和接收數據的程序免費下載

評論