前言:本文讲解涉及到python中socket函数用法,需要巩固基础知识的可以查看下面博客
python——Socket网络编程(详细讲解)(一)_xiaofengdada的博客-CSDN博客_socket编程python
python——Socket网络编程(详细讲解)(二)_xiaofengdada的博客-CSDN博客
服务端代码:
#通过socket实现服务器端和客户端的在线聊天import socket #导入socket模块s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#声明socket类型面向连接,套接字家族为AF_INEThost = '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':breakelse:print(f'客户端发送的数据:{data.decode()}')data_res = input("服务端:")if data_res == 'close':conn.send(data_res.encode())breakelse:conn.send(data_res.encode())s.close()#会话关闭conn.close()#连接关闭
客户端代码:
#客户端import socket #导入socket模块c = socket.socket(socket.AF_INET,socket.SOCK_STREAM)#声明socket类型面向连接,套接字家族为AF_INEThost = '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':breakc.close()#连接关闭
最终实现效果:
先运行服务器端,建立通信,再运行客户端。