tcp聊天,#server端实现:import socketsk=socket.socket() # 实例化socket对象address=("0.0.0.0",8000) #设置端口sk.bind(address) # 绑定IP地址和端口sk.listen(5) #监听while True: conn,addr=sk.accept()#conn接受数据,addr获取客户端ip地址 while True: # 这个循环来实现相互之间聊天的逻辑 try: #win被中断连接就会异常 linux不会 data=conn.recv(1024) #定义1024字节接受数据,这里的数据只能是bytes类型的数据,否则报错; if data: # 假如客户端传递数据过来时 print("-->",str(data,"utf-8")) # 打印客户端传递过来的数据,需要从bytes类型数据解码成unicode类型的数据 data=bytes(input(">>>"),"utf-8") # 接收输入的数据并转换成bytes类型的数据 conn.send(data) # 将bytes类型的数据发送给客户端 else: # 否则客户端连接的对象,当客户端正常退出,执行了sk.close()时将不会发送数据到服务端 conn.close() # 这时关闭这个conn对象并退出当前循环等待下一个客户端对象来连接 break except ConnectionResetError as e: # 捕获到异常之后,打印异常出来并退出循环等待下一个客户端连接 print(e) break
#client端实现import socket # 导入socket模块sk=socket.socket() # 实例化客户端对象address=("127.0.0.1",8000) # 设置客户端需要连接的服务端IP地址以及端口sk.connect(address) # 连接服务端的IP地址以及端口while True: # 循环实现对话 data=input(">>>").strip() # 获取用户输入的数据 if data=="exit": # 如果输入的是exit 关闭该对象并退出程序 sk.close() # 关闭对象 break # 退出循环 sk.send(bytes(data,"utf-8")) # 发送刚输入的数据,要先转换成bytes类型的数据 data=str(sk.recv(1024),"utf-8") # 接收服务端发送的数据,并将其转换成unicode数据类型 print("-->",data) # 打印服务端传输过来的数据
原文地址:https://www.cnblogs.com/lc1013/p/10216497.html
时间: 2024-10-12 07:52:15