一、服务器端代码
import struct
from socket import *
#创建套接字
s = socket(AF_INET, SOCK_STREAM)
#绑定端口
s.bind(('',8089)) #绑定的是本机,端口为8089
s.listen()
#接收客户端的连接
client_socket, client_info = s.accept()
#接收
while True:
#服务器端接收客户端消息
data = client_socket.recv(1024) # 接收数据,类型为元组
print('客户端说:',data.decode('utf-8'))
if data.decode('utf-8') == 'bye':
break
msg = input('>>>>')
client_socket.send(msg.encode('utf-8'))
if msg == 'bye':
break
s.close()
client_socket.close()
二、客户端代码
import struct
from socket import *
# 创建套接字
client_socket = socket(AF_INET, SOCK_STREAM)
# 绑定端口
HOST = '192.168.1.104'
client_socket.connect((HOST, 8089))
while True:
# 客户端发送消息
msg = input('>>>>')
client_socket.send(msg.encode('utf-8'))
if msg == 'bye':
break
# 客户端接收消息
recv_data = client_socket.recv(1024)
print('服务器端说:', recv_data.decode('utf-8'))
if recv_data.decode('utf-8') == 'bye':
break
client_socket.close()
三、测试
1、首先运行服务器端代码,控制台显示如下:
2、然后运行客户端代码,控制台显示如下:
3、接下来在客户端输入“你好”,则客户端控制台显示:
4、打开服务器端控制台,并输入内容“请问您想咨询哪些内容?”,则先后显示如下:
5、此时打开客户端控制台,显示如下:
6、至此,我们实现了服务器端与客户端的单线程依次聊天。
注意此时还不能在客户端或服务器端连续发送消息,否则会有如下提示:
7、根据我们代码中的设置,当在客户端或服务器端输“bye”时,聊天自动结束,退出聊天室。
https://blog.sciencenet.cn/blog-346157-1297775.html
上一篇:
TCP服务器接收数据