一、服務端
1 import socket 2 3 4 # 1、買手機 5 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 6 # print(phone) 7 8 # 2、綁定手機卡 9 phone.bind(('127.0.0.1', 8080)) # 0-65535:0-1024給操作系統使用 10 11 # 3、開機 12 phone.listen(5) 13 14 # 4、等電話連接 15 print('starting.....') 16 res = phone.accept() 17 print('=======>') 18 print(res)
運行服務端,會卡在res = phone.accept()等待連接
二、客戶端
1 import socket 2 3 4 # 1、買手機 5 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 6 # print(phone) 7 8 # 2、撥號 9 phone.connect(('127.0.0.1', 8080))
先運行服務端,然后運行客戶端,結果為:
1 1 服務端結果為: 2 2 3 3 starting..... 4 4 =======> 5 5 (<socket.socket fd=480, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('127.0.0.1', 8080), raddr=('127.0.0.1', 61788)>, ('127.0.0.1', 61788))
三、完整的一次通信代碼
1 服務端: 2 3 # 1、買手機 4 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 5 # print(phone) 6 7 # 2、綁定手機卡 8 phone.bind(('127.0.0.1', 8080)) # 0-65535:0-1024給操作系統使用 9 10 # 3、開機 11 phone.listen(5) 12 13 # 4、等電話連接 14 print('starting.....') 15 conn, client_addr = phone.accept() 16 17 # 5、收、發信息 18 data = conn.recv(1024) # 1、單位:bytes 2、1024代表最大接受1024個bytes 19 print('客戶端的數據', data) 20 21 conn.send(data.upper()) 22 23 # 6、掛電話 24 conn.close() 25 26 # 7、關機 27 phone.close() 28 29 客戶端: 30 31 import socket 32 33 34 # 1、買手機 35 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 36 # print(phone) 37 38 # 2、撥號 39 phone.connect(('127.0.0.1', 8080)) 40 41 # 3、發、收消息 42 phone.send('hello'.encode('utf-8')) 43 data = phone.recv(1024) 44 print(data) 45 46 # 4、關閉 47 phone.close()
服務端運行結果為:
1 starting..... 2 客戶端的數據 b'hello'
客戶端運行結果為:
1 b'HELLO'
