按照题目的意思,我写的程序如下:
服务器端程序:
import socketHOST = '' # Symbolic name meaning all available interfacesPORT = 50007 # Arbitrary non-privileged portwith socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:s.bind((HOST, PORT))s.listen(1)conn, addr = s.accept()with conn:print('Connected by', addr)while True:recv_data = conn.recv(1024)print('对方说的话是:'+recv_data.decode('utf-8'))send_data = input('在此输入要给对方说的话:')conn.send(send_data.encode('utf-8'))
客户端程序:
# Echo client programimport socketHOST = '127.0.0.1' # The remote hostPORT = 50007 # The same port as used by the serverwith socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:s.connect((HOST, PORT))while True:send_data = input('在此输入要给对方说的话:')s.send(send_data.encode('utf-8'))recv_data = s.recv(1024)print('对方说的话是:'+recv_data.decode('utf-8'))
我运行了一下,达到了效果,只是没有定义bye-bye程序,执行情况如下:
《Python核心编程》练习题之2-7:创建一个简单的半双工聊天程序。半双工 就是指建立一个连接且服务开始后 一次只能一端发消息 不能同时对发消息。一个参与者在服务器一侧 另一位在客户端一侧