使用場景:
socket長連接使用場景很廣泛箕戳,例如即時通訊唬党、視頻滑频、實時監(jiān)控等腺逛。
服務端代碼:
#coding=utf-8
import socket # 導入網(wǎng)絡編程服務
# 編寫服務端代碼
if __name__ == '__main__':
s = socket.socket() # 創(chuàng)建socket對象
host = "172.20.10.4" # socket.gethostname() # 獲取本機地址
port = 12345 # 設置端口
s.bind((host, port)) # 綁定地址和端口
s.listen(5) # 設置最大客戶端鏈接
mess = "" # 如果mess變量為close著拭,判斷服務端是否要關閉服務
# 服務端接受與客戶端的鏈接纱扭,可支持多個客戶端鏈接
while True: # true代表判斷條件永遠是真,會一直執(zhí)行這個循環(huán)的意思
con, addr = s.accept() # 建立與客戶端的連接 connetion 連接對象
print addr
# 服務端與客戶端循環(huán)發(fā)送消息和接收消息
while True:
# 使用socket接收客戶端發(fā)送過來的內容
data = con.recv(1024)
print data
# 在終端輸入需要發(fā)送的內容
data = raw_input("請輸入:")
# 使用socket向客戶端端發(fā)送終端輸入內容
con.send(data)
# 如果服務端發(fā)送的內容是close儡遮,則將close賦值給大while循環(huán)mess變量乳蛾,同時終止小while循環(huán)
if data == "close":
mess = data
break
# 第二個while循環(huán)結束后,關閉服務端與某個客戶端的鏈接
con.close()
# 判斷是否關閉服務端
if mess == "close":
break
s.close()
客戶端代碼:
#coding=utf-8
import socket # 導入網(wǎng)絡編程服務
# 編寫客戶端代碼
if __name__ == '__main__':
s = socket.socket() # 創(chuàng)建 socket 對象
host = "172.20.10.2" # socket.gethostname() # 獲取本地主機名
port = 12345 # 設置端口號
s.connect((host, port)) # 連接成功
while True: # true代表判斷條件永遠是真峦萎,會一直執(zhí)行這個循環(huán)的意思
# 在終端輸入需要發(fā)送的內容
data = raw_input("請輸入:")
# 使用socket向服務端發(fā)送終端輸入內容
s.send(data)
# 使用socket接收服務端發(fā)送過來的內容
data = s.recv(1024)
print data
# 如果socket接收的消息是close則終止循環(huán)屡久,并關閉客戶端鏈接
if data == "close":
break
s.close()