Socket 通常被稱之為套接字,已經成為Windows,mac等操作系統共同遵守的網路編程標準。可以用它通過網路來實現不同電腦之間的通信,也可以實現相同主機內的不同進程之間的通信。用socket進行網路開發需要瞭解伺服器和客戶端的socket原語。有如下原語: socket():建立socket ...
Socket 通常被稱之為套接字,已經成為Windows,mac等操作系統共同遵守的網路編程標準。可以用它通過網路來實現不同電腦之間的通信,也可以實現相同主機內的不同進程之間的通信。用socket進行網路開發需要瞭解伺服器和客戶端的socket原語。有如下原語:
socket():建立socket對象,參數通常包括使用的傳輸層協議類型,網路層地址類型等。
bind():進行綁定。在參數中要傳入要綁定的IP地址和埠。
listen():監聽。在服務端使用,用來告訴系統監聽bind綁定的IP地址和埠,監聽客戶端來的連接。參數中可指定最大允許排隊的連接數量。
connect():連接。在客戶端使用,參數中需要指定伺服器的地址和埠號。
accept():接收連接。在服務端使用,從監聽到的連接隊列中取出一個,包裝成一個新的socket對象,用它和請求來的客戶端進行通信。
send():發送數據。兩端都可用,參數是要發送的數據,python3中支持bytes類型的數據。
recv():接收數據。兩端均可使用,參數中可指定接收數據的大小。
close():關閉連接。
下麵是具體的使用實例:客戶端發送字元串,服務端將其轉換成大寫後返回給客戶端。
服務端:
#導入socket模塊
import socket
#創建socket對象
server = socket.socket()
#綁定地址和埠
server.bind(('localhost',6969))
#監聽連接
server.listen(5)
print("等待連接.....")
#迴圈接受連接
while True:
#接受連接,返回連個對象
conn,addr = server.accept()
print("連接成功......")
print(conn,addr)
#迴圈接受收據
while True:
data = conn.recv(1024)
#將接受的數據解碼成str類型進行輸出
print("recv:",data.decode())
#將數據轉換成大寫發送給客戶端
conn.send(data.upper())
#關閉連接
server.close()
客戶端:
import socket
client = socket.socket()
#連接服務端
client.connect(('localhost',6969))
#迴圈發送數據
while True:
#用戶輸入字元串
msg = input(">>:").strip()
#發送數據
client.send(msg.encode())
#接受客戶端發來的數據
data = client.recv(1024)
#列印數據
print("recv:",data.decode())
#關閉連接
client.close()