TCP模拟QQ聊天(单线程)
2021-7-31 17:45
阅读:1994
一、服务器端代码
import structfrom 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 structfrom 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://m.sciencenet.cn/blog-346157-1297775.html?mobile=1
收藏
下一篇
当前推荐数:0
推荐到博客首页
网友评论0 条评论