Python--网络编程-----socket编程示例--打电话
一、服务端
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'