這篇文章主要講解了“Python基于socket怎么實現TCP客戶端和服務端”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Python基于socket怎么實現TCP客戶端和服務端”吧!
import socket # 建立socket對象 # 參數一表示IP地址類型(AF_INET為IPV4,AF_INET6為IPV6),參數二表示連接的類型(SOCK_STREAM表示TCP形式,SOCK_DGRAM表示UDP形式) client_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 代表(ipv4,TCP) # 連接服務器(元組中填目標ip地址和端口號) client_socket.connect(('127.0.0.1',7777)) # 準備數據,需要轉換為二進制數據,encode()中填寫的是本地的字符串編碼格式,mac、linux填utf-8 data='hello'.encode('gbk') # 向服務器發送數據 client_socket.send(data) # 接收數據,必須要指定接收數據的大小,單位字節,最大4096,即4k recv_data=client_socket.recv(1024) # 接收的數據要進行decode()解碼,發送的時候用啥編碼就填啥編碼 recv_data=recv_data.decode('gbk') print(recv_data) # 關閉連接 client_socket.close()
import socket
# 建立socket對象
server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 如果服務器是一次性的,如果服務器結束后馬上重新啟動會出現一個錯誤,原因是地址和端口沒有被釋放
# OSError: [Errno 48] Address already in use
# 如果想馬上釋放,要設置一下socket選項
server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)
# 綁定IP和端口,如果在綁定IP時沒有給定IP,默認是綁定本地IP
server_socket.bind(('',7777))
# 設置監聽(最大監聽數),設置完后服務端會進入被動模式,不能主動連接客戶端,只能被動地等待客戶端的連接
server_socket.listen(128)
# 等待客戶端連接,連接上后,函數會返回客戶端的Socket對象和地址信息
client_socket,ip_port=server_socket.accept()
print(f'客戶端{ip_port[0]}使用端口{ip_port[1]}連接成功...')
# 接收客戶端數據
data=client_socket.recv(1024)
# 查看客戶端發送的數據長度
if len(data)!=0:
data=data.decode('gbk')
print(f'客戶端{ip_port[0]}使用端口{ip_port[1]}發送是數據是{data}')
else:
print(f'客戶端{ip_port[0]}使用端口{ip_port[1]}關閉了連接')
# 給客戶端發送數據
data='你好'.encode('gbk')
client_socket.send(data)
# 關閉客戶端
client_socket.close()
# 關閉服務端
server_socket.close()感謝各位的閱讀,以上就是“Python基于socket怎么實現TCP客戶端和服務端”的內容了,經過本文的學習后,相信大家對Python基于socket怎么實現TCP客戶端和服務端這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。