溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python基于socket怎么實現(xiàn)TCP客戶端和服務端

發(fā)布時間:2022-04-12 09:06:04 來源:億速云 閱讀:243 作者:iii 欄目:開發(fā)技術(shù)

這篇文章主要講解了“Python基于socket怎么實現(xiàn)TCP客戶端和服務端”,文中的講解內(nèi)容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Python基于socket怎么實現(xiàn)TCP客戶端和服務端”吧!

一、基于socket實現(xiàn)的TCP客戶端

import socket
 
# 建立socket對象
# 參數(shù)一表示IP地址類型(AF_INET為IPV4,AF_INET6為IPV6),參數(shù)二表示連接的類型(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))
# 準備數(shù)據(jù),需要轉(zhuǎn)換為二進制數(shù)據(jù),encode()中填寫的是本地的字符串編碼格式,mac、linux填utf-8
data='hello'.encode('gbk')
# 向服務器發(fā)送數(shù)據(jù)
client_socket.send(data)
# 接收數(shù)據(jù),必須要指定接收數(shù)據(jù)的大小,單位字節(jié),最大4096,即4k
recv_data=client_socket.recv(1024)
# 接收的數(shù)據(jù)要進行decode()解碼,發(fā)送的時候用啥編碼就填啥編碼
recv_data=recv_data.decode('gbk')
print(recv_data)
# 關(guān)閉連接
client_socket.close()

二、基于socket實現(xiàn)的TCP服務端

import socket
# 建立socket對象
server_socket=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 如果服務器是一次性的,如果服務器結(jié)束后馬上重新啟動會出現(xiàn)一個錯誤,原因是地址和端口沒有被釋放
# OSError: [Errno 48] Address already in use
# 如果想馬上釋放,要設(shè)置一下socket選項
server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,True)
# 綁定IP和端口,如果在綁定IP時沒有給定IP,默認是綁定本地IP
server_socket.bind(('',7777))
# 設(shè)置監(jiān)聽(最大監(jiān)聽數(shù)),設(shè)置完后服務端會進入被動模式,不能主動連接客戶端,只能被動地等待客戶端的連接
server_socket.listen(128)
# 等待客戶端連接,連接上后,函數(shù)會返回客戶端的Socket對象和地址信息
client_socket,ip_port=server_socket.accept()
print(f'客戶端{ip_port[0]}使用端口{ip_port[1]}連接成功...')
# 接收客戶端數(shù)據(jù)
data=client_socket.recv(1024)
# 查看客戶端發(fā)送的數(shù)據(jù)長度
if len(data)!=0:
    data=data.decode('gbk')
    print(f'客戶端{ip_port[0]}使用端口{ip_port[1]}發(fā)送是數(shù)據(jù)是{data}')
else:
    print(f'客戶端{ip_port[0]}使用端口{ip_port[1]}關(guān)閉了連接')
 
# 給客戶端發(fā)送數(shù)據(jù)
data='你好'.encode('gbk')
client_socket.send(data)
# 關(guān)閉客戶端
client_socket.close()
# 關(guān)閉服務端
server_socket.close()

感謝各位的閱讀,以上就是“Python基于socket怎么實現(xiàn)TCP客戶端和服務端”的內(nèi)容了,經(jīng)過本文的學習后,相信大家對Python基于socket怎么實現(xiàn)TCP客戶端和服務端這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI