一、代码示例
服务端:
1 import socket 2 3 4 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 5 phone.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) 6 phone.bind((‘127.0.0.1‘, 8080)) # 0-65535:0-1024给操作系统使用 7 phone.listen(5) 8 9 print(‘starting.....‘) 10 while True: # 链接循环 11 conn, client_addr = phone.accept() 12 print(client_addr) 13 14 while True: # 通信循环 15 try: 16 data = conn.recv(1024) 17 if not data: # 适用于linux操作系统 18 break 19 print(‘客户端的数据‘, data) 20 21 conn.send(data.upper()) 22 except ConnectionResetError: # 适用于windows操作系统 23 break 24 25 conn.close() 26 27 phone.close()
客户端1
1 import socket 2 3 # 1、买手机 4 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 5 # print(phone) 6 7 # 2、拨号 8 phone.connect((‘127.0.0.1‘, 8080)) 9 10 # 3、发、收消息 11 while True: 12 msg = input(‘>>:‘).strip() 13 if not msg: 14 continue 15 phone.send(msg.encode(‘utf-8‘)) 16 data = phone.recv(1024) 17 print(data) 18 19 # 4、关闭 20 phone.close()
客户端2
1 import socket 2 3 # 1、买手机 4 phone = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 5 # print(phone) 6 7 # 2、拨号 8 phone.connect((‘127.0.0.1‘, 8080)) 9 10 # 3、发、收消息 11 while True: 12 msg = input(‘>>:‘).strip() 13 if not msg: 14 continue 15 phone.send(msg.encode(‘utf-8‘)) 16 data = phone.recv(1024) 17 print(data) 18 19 # 4、关闭 20 phone.close()
加上链接循环之后,服务端可以依次为客户端1和客户端2提供服务,但是同时只能为一个客户端提供服务,不能够并行提供服务