基于tcp协议版本

服务器端

import socket

server = socket.socket()
server.bind(('127.0.0.1', 8001))
server.listen(5) flag = 1
while flag:
conn, addr = server.accept() while 1:
send_msg = input('msg:').strip().lower()
conn.send(send_msg.encode())
if send_msg == 'q':
flag = 0
break
msg = conn.recv(1024).decode()
if msg == 'q': break
print(msg)
print('当前客户端断开连接等待新的连接')
cmd = input('输入(q)退出,其他返回聊天:').strip().lower()
if cmd == 'q':
flag = 0
conn.close() server.close()

客户端

import socket

client = socket.socket()
client.connect(('127.0.0.1', 8001))
while 1:
# client.send(b'byebye')
msg = client.recv(1024).decode().lower()
print(msg)
if msg == 'q': break
send_msg = input('msg:').lower().strip()
client.send(send_msg.encode())
if send_msg == 'q': break client.close()

基于tcp协议socketserver版本

服务器端

import socketserver

class Myserver(socketserver.BaseRequestHandler):
def handle(self):
conn = self.request # 相当于conn = server.accept()
while True: msg = conn.recv(1024).decode()
print(msg)
content = input('>>>>')
conn.send(content.encode()) server = socketserver.ThreadingTCPServer(('127.0.0.1', 8001), Myserver) server.serve_forever()

客户端

import socket

client = socket.socket()

client.connect(('127.0.0.1', 8001))

while True:
content = input('>>>>')
client.send(content.encode())
msg = client.recv(1024).decode()
print(msg) client.close()

基于udp协议版本

服务器端

import socket

server = socket.socket(type=socket.SOCK_DGRAM)
server.bind(('127.0.0.1', 9000))
while True:
msg, clt_addr = server.recvfrom(1024)
print(msg.decode())
content = input('>>>')
server.sendto(content.encode(), clt_addr) sk.close()

客户端

import socket

client = socket.socket(type=socket.SOCK_DGRAM)

count = 0
while True:
count += 1
content = input('>>>')
content = '%s : %s' % (count, content)
client.sendto(content.encode(), ('127.0.0.1', 9000))
msg, addr = client.recvfrom(1024)
print(msg.decode()) sk.close()

用python实现一个简单的聊天功能,tcp,udp,socketserver版本的更多相关文章

  1. 通过python 构建一个简单的聊天服务器

    构建一个 Python 聊天服务器 一个简单的聊天服务器 现在您已经了解了 Python 中基本的网络 API:接下来可以在一个简单的应用程序中应用这些知识了.在本节中,将构建一个简单的聊天服务器.使 ...

  2. Spring 学习——基于Spring WebSocket 和STOMP实现简单的聊天功能

    本篇主要讲解如何使用Spring websocket 和STOMP搭建一个简单的聊天功能项目,里面使用到的技术,如websocket和STOMP等会简单介绍,不会太深,如果对相关介绍不是很了解的,请自 ...

  3. python练习四—简单的聊天软件

    python最强大的是什么?库支持!!有了强大的库支持,一个简单的聊天软件实现就更简单了,本项目思路如下 # 项目思路 1. 服务器的工作 * 初始化服务器 * 新建一个聊天房间 * 维护一个已链接用 ...

  4. 采用tcp协议和UDP协议实现简单的聊天功能

    Date: 2019-06-19 Author: Sun 一. Python3输出带颜色字体 实现过程: ​ 终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关. ​ 转义 ...

  5. 用Python写一个简单的Web框架

    一.概述 二.从demo_app开始 三.WSGI中的application 四.区分URL 五.重构 1.正则匹配URL 2.DRY 3.抽象出框架 六.参考 一.概述 在Python中,WSGI( ...

  6. TensorFlow练习13: 制作一个简单的聊天机器人

    现在很多卖货公司都使用聊天机器人充当客服人员,许多科技巨头也纷纷推出各自的聊天助手,如苹果Siri.Google Now.Amazon Alexa.微软小冰等等.前不久有一个视频比较了Google N ...

  7. 用Python编写一个简单的Http Server

    用Python编写一个简单的Http Server Python内置了支持HTTP协议的模块,我们可以用来开发单机版功能较少的Web服务器.Python支持该功能的实现模块是BaseFTTPServe ...

  8. [SignalR]一个简单的聊天室

    原文:[SignalR]一个简单的聊天室 1.说明 开发环境:Microsoft Visual Studio 2010 以及需要安装NuGet. 2.添加SignalR所需要的类库以及脚本文件: 3. ...

  9. 用Go语言实现一个简单的聊天机器人

    一.介绍 目的:使用Go语言写一个简单的聊天机器人,复习整合Go语言的语法和基础知识. 软件环境:Go1.9,Goland 2018.1.5. 二.回顾 Go语言基本构成要素:标识符.关键字.字面量. ...

随机推荐

  1. 【zookeeper】Apache curator的使用及zk分布式锁实现

    上篇,本篇主要讲Apache开源的curator的使用,有了curator,利用Java对zookeeper的操作变得极度便捷. 其实在学之前我也有个疑虑,我为啥要学curator,撇开涨薪这些外在的 ...

  2. Manjaro Linux执行某些命令缺少libtinfo.so.5问题

    Manjaro默认有libtinfo.so.6而没有libtinfo.so.5,软件如果需要可执行以下命令安装: sudo pacman -S ncurses5-compat-libs #或 sudo ...

  3. iOS(Swift)-Runtime之关于页面跳转的捷径【Runtime获取当前ViewController,很常用】

    写在前面 在我们操作页面跳转时,如果当前的类不是UIViewcontroller(下面用VC表示),你会不会写一个代理,或者block给VC传递信息,然后在VC里面进行 ///假如targetVc是将 ...

  4. UR5 改造

    背景 项目要求 UR5 安装在移动平台上,需要做以下改造: 供电:由 220V 市电改为直流电源(锂电池)直接供电: 控制:由示教器控制改为上位机远程控制 线路改造 1. UR5 电气图(来自UR5服 ...

  5. 使用R进行分组统计

    分组统计数据集是很常见的需求,R中也有相应的包支持数据集的分组统计.自己尝试了写了段R代码来完成分组统计数据集,支持公式,感觉用起来还算方便.代码分享在文章最后. 使用方式: step 1: sour ...

  6. python 获取excel表内容 生成php数组

    需求: 生成:同时处理数字类型,比如3 不能显示为3.0 [ ['type'=>3,'da_name'=>福建省平潭拓至美装饰工程有限公司,'da_aka'=>福建省平潭拓至美装饰工 ...

  7. 16-hadoop-mapreduce简介

    mapreduce是hadoop的核心组件, 设计理念是移动计算而不是移动数据, mapreduce的思想是'分而治之', 将复杂的任务分解成几个简单的任务去执行 1, 数据和计算规模大大减少 2, ...

  8. SSL虚拟主机安全方案

    SSL虚拟主机安全方案 随着虚拟主机技术的发展,功能越来越丰富,已经不仅仅只是满足个人网站的需要,越来越多的小型电子商务网站也采用了虚拟主机来建站,如何为这些商户提供经济.方便的SSL解决方案,成为虚 ...

  9. 不会几个框架,都不好意思说搞过前端: Node.js & angular.js

    Node.js  菜鸟教程 :http://www.runoob.com/nodejs/nodejs-install-setup.html angular.js  菜鸟教程 :http://www.r ...

  10. 笔记:css3伪选择器改变滚动条样式

    现在我打开支持前缀-webkit-的浏览器,也就是说只要支持前缀为-webkit-的浏览器才有效果 <!doctype html> <html lang="en" ...