本文转载:https://xiaochuhe.blog.csdn.net/article/details/122686803
服务端代码:
#通过socket实现服务器端和客户端的在线聊天
import socket #导入socket模块
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#声明socket类型面向连接,套接字家族为AF_INET
host = '0.0.0.0' #设置本地主机作为地址
port = 30000#设置端口
s.bind((host,port)) #绑定地址和端口
s.listen()#开始监听
conn,addr = s.accept()#建立客户连接
print('连接的地址和端口:', addr) # 输出响应地址127.0.0.1和一个任意监听的地址的端口
while True:
data = conn.recv(1024) # 接受数据为1024字节
if data.decode() == 'close':
break
else:
print(f'客户端发送的数据:{data.decode()}')
data_res = input("服务端:")
if data_res == 'close':
conn.send(data_res.encode())
break
else:
conn.send(data_res.encode())
s.close()#会话关闭
conn.close()#连接关闭
客户端代码:
#客户端
import socket #导入socket模块
c = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#声明socket类型面向连接,套接字家族为AF_INET
host = '127.0.0.1' #设置本地主机作为地址,必须跟客户端一样
port =30000 #设置端口,必须跟客户端一样
try:
c.connect((host, port)) # 绑定地址和端口,必须跟客户端一样
except Exception as e:
print('服务端不存在!')
while True:
data_res = input("服务端:")
c.sendall(data_res.encode())#发送信息
data = c.recv(1024)#接受服务器端的数据为1024字节
data = data.decode()#解码接受到的数据
print("接收到服务器的数据为:",data)
if data_res == 'close':
break
c.close()#连接关闭
最终实现效果:
先运行服务器端,建立通信,再运行客户端。
服务端输出结果:
客户端输出结果:
原文链接:https://blog.csdn.net/xiaofengdada/article/details/122686803