python模拟QQ聊天室(tcp加多线程)
python模拟QQ聊天室(tcp加多线程)
服务器代码:
from socket import *
from threading import *
s = socket(AF_INET,SOCK_STREAM)
s.setsockopt(SOL_SOCKET, SO_REUSEADDR, 1)
s.bind(('',8080))
s.listen(1024)
def t_send():
    cs_tuple = cs_list[-1]
    cs = cs_tuple[0]
    while 1:
        recv_data = cs.recv(1024)
        if len(recv_data) <= 0:
             cs_list.remove(cs_tuple)
             cs.close()
             exit()
        for i in cs_list:
            send_data = '\n['+cs_tuple[1]+':'+str(cs_tuple[2])+']: '+recv_data.decode('gb2312')
            print(send_data)
            i[0].send(send_data.encode('gb2312'))
cs_list = []
while 1:
    cs,(user_ip,user_port) = s.accept()
    cs_list.append((cs,user_ip,user_port))
    t = Thread(target = t_send)
    t.start()
客户端代码:
- 由于没有图形界面,很难模拟可以同时发送和接收的功能,所以只能写一个简单的发送客户端
from socket import *
server_ip = '127.0.0.1'
server_port = 8080
send_data = '大家好^-^'
s = socket(2,1)
try:
    s.connect((server_ip,server_port))
except:
    print('无法连接到服务器')
else:
    s.send(send_data.encode('gb2312'))
    recv_data = s.recv(1024)
    print(recv_data.decode('gb2312'))
s.close()
python模拟QQ聊天室(tcp加多线程)的更多相关文章
- TCP模拟QQ聊天功能
		需求: 模拟qq聊天功能:实现客户端与服务器(一对一)的聊天功能,客户端首先发起聊天,输入的内容在服务器端和客户端显示,然后服务器端也可以输入信息,同样信息在客户端和服务端显示. 提示: 客户端 1) ... 
- 模拟QQ聊天与视频聊天同时进行-------java基础知识总结
		前言:多线程的知识 代码: package com.day13.math; /** * 类说明 :模拟QQ聊天与视频聊天同时进行 * @author 作者 : chenyanlong * @versi ... 
- Python实现文字聊天室
		你是否想过用所学的Python开发一个图形界面的聊天室程序啊? 像这样的: 如果你想开发这样一个有点怀旧风格的聊天程序,那么可以接着看: 要开发这个聊天程序,你需要具备以下知识点: asyncore ... 
- 5  多线程 模拟qq聊天
		1.多线程思路 使用多线程完成一个全双工的QQ聊天程序 2.版本1:程序小框架 #1.收数据,然后打印 def recvData(): pass #2.检测键盘,发数据 def sendData(): ... 
- Python Socket 编程——聊天室示例程序
		上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ... 
- Python Socket 编程——聊天室演示样例程序
		上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和client的代码了解主要的 Python Socket 编程模型.本文再通过一个样例来加强一下对 Socket ... 
- 一键QQ聊天与一键加群QQ功能
		最新有项目要求,点击页面上的一个按钮,实现直接启动QQ聊天,添加QQ群的功能. 开始以为会很复杂,百度后发现QQ已经有考虑到这方面的需求,只需进入:QQ推广 -> 推广工具 就能看到如下界面 
- Python Socket 简单聊天室2
		上篇文章写了一个简单的单线程的一问一答的简单聊天室.这次我们使用SocketServer模块搭建一个多线程异步的聊天室. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 ... 
- Python Socket 简单聊天室1
		这是第一版,最简单的,仅仅实现了通信,你收我发,我收你发而已.下篇将介绍,基于异步多线程的聊天室: 客户端: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 ... 
随机推荐
- xshell输入奇怪,空格间距变大
			https://www.macx.cn/thread-2018939-1-1.html 按一下shift+空格就行了 全角/半角转换的快捷键... dd 
- 第5章-Vue.js交互及生命周期练习
			一.学习目标 使用网络请求进行前后端交互 (重点) 理解钩子函数的作用 (难点) 掌握Vue.js过滤器的使用方法 了解Vue.js事件的深入用法 (重点) 二.仿写留言板 2.1.实现" ... 
- 前端PHP入门-015-递归函数-飘过
			提要: 如果感觉吃力,web前端的各位同学,可以弃之. 递归函数,递归只是一个名字,而递归函数的规定: 函数体内调用函数自己 . 我们来计算 10!=10*9*8*7*6*5*4*3*2*1 web前 ... 
- 如何识别字符串是否是UTF-8编码的
			我们先要弄明白原始字符串里的字符用的是何种编码方式,运行如下 string tmp = "你好world"; for(int i=0;i<tmp.size();++i) { ... 
- 自己封装的ASP.NET的MYSQL的数据库操作类
			/** * 作者:牛腩 * 创建时间:2010年3月7日17时35分 * 类说明:对MYSQL数据库的操作类 */ using System; using System.Data; using MyS ... 
- 编程笔记:JavaScript 中的类型检查
			在Badoo的时候我们写了大量的JS脚本,光是在我们的移动web客户端上面就有大概60000行,可想而知,维护这么多JS可是相当具有挑战性的.在写如上规模js脚本客户端应用的时候我们必须对一件事保持警 ... 
- angular package.json中start build
			"start": "ng serve --host 0.0.0.0 --port 4200 --proxy-config proxy.conf.json", & ... 
- 【BZOJ3745】Norma [分治]
			Norma Time Limit: 20 Sec Memory Limit: 64 MB[Submit][Status][Discuss] Description Input 第1行,一个整数N: ... 
- 谁说运维用ELK没用?我就说很有用,只是你之前不会用【转】
			1.安装JDK 1)登陆ORACLE官网 (http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html ... 
- css 水平、垂直居中
			水平居中 行内元素 行内元素:(img.span.文字等行内元素),通过在父级元素设置 text-align:center 使元素水平居中. 块级元素 块级元素:(div.p.h1...h6.ul.l ... 
