客戶端
"""
tcp_server.py tcp套接字服務(wù)端流程
重點(diǎn)代碼
注意: 功能性代碼斗遏,注重流程和函數(shù)使用
"""
import socket
# 創(chuàng)建tcp套接字
sockfd = socket.socket(socket.AF_INET,
socket.SOCK_STREAM)
# 綁定地址
sockfd.bind(('0.0.0.0', 8888))
# 設(shè)置監(jiān)聽(tīng)
sockfd.listen(5)
while True:
# 阻塞等待處理連接
print("Waiting for connect...")
try:
connfd, addr = sockfd.accept()
print("Connect from", addr) # 打印鏈接的客戶端地址
except KeyboardInterrupt:
print("Server exit")
break
except Exception as e:
print(e)
continue
while True:
# 收發(fā)消息
data = connfd.recv(1024)
if not data: # 如果data 為空的話說(shuō)明客戶端退出
break
print("收到:", data.decode())
n = connfd.send(b'Thanks') # 發(fā)送字節(jié)串
print("發(fā)送%d字節(jié)" % n)
connfd.close()
# 關(guān)閉套接字
sockfd.close()
客戶端
"""
tcp_client.py ×枚馈tcp客戶端流程
重點(diǎn)代碼
"""
from socket import *
# 創(chuàng)建tcp套接字
sockfd = socket() # 使用默認(rèn)參數(shù)->tcp套接字
# 連接服務(wù)器
server_addr = ('127.0.0.1',8899) #服務(wù)端地址
sockfd.connect(server_addr)
while True:
# 發(fā)送消息
data = input("Msg>>")
if not data:
break
sockfd.send(data.encode()) # 轉(zhuǎn)換為字節(jié)串再發(fā)送
data = sockfd.recv(1024)
print("Server:",data.decode()) # 打印接收內(nèi)容
# 關(guān)閉套接字
sockfd.close()