基于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. sql语句_统计总成绩最高的前2名

    有一个数据表,id user_id score 三个字段,计算总成绩最高的前两名 SELECT * FROM (SELECT user_name,SUM(score) AS score FROM us ...

  2. 用switch函数根据选择不同的radio出现不同的视图

    html代码: <!DOCTYPE html> <html> <head> <title></title> <style type=& ...

  3. System Trace in Depth

    原理 使用 system trace 时,会记录最近 5s 的 kernel trace,然后分析下面的操作: Scheduling activity System calls Virtual mem ...

  4. yii2之ActiveForm表单使用

    因目前项目并非前后端分离模式,且用到PHP的yii2框架(所有html代码,js较多内嵌在.php文件内多少采用同步提交[喷墨中...]),遂对于前端面上需要用到的yii2小组件一些整理(因是前端若涉 ...

  5. 【LOJ 2542】【PKUWC2018】 随机游走(最值反演 + 树上期望dp)

    哇我太菜啦555555 不妨钦定我们需要访问的点集为$S$,在$S$已知的情况下,我们令$f(x) $表示从$x$走到点集$S$中任意一点的期望步数. 若$x∈S$,则显然$f(x)=0$,否则$f[ ...

  6. POJ 1160

    #include <iostream> #define MAXN 305 #define inf 123456789 using namespace std; int _m[MAXN][M ...

  7. POJ 1102

    #include<iostream>// cheng da cai zi 11.14 using namespace std; int main() { int i; int j; int ...

  8. Linux驱动:LCD驱动测试

    (1) 进入内核源码目录中,make menuconfig -> Device Drivers -> Graphics support -> [M]Support for frame ...

  9. hadoop1.x异常

    可能是存在class冲突 http://stackoverflow.com/questions/25130799/hadoop-java-io-ioexception-call-to-localhos ...

  10. Android4.0以上版本比较靠谱的获取手机屏幕分辨率的方法

    /** * 获取虚拟按键栏高度 * * @param context * @return */ public static int getNavigationBarHeight(Context con ...