用Python写一个模拟qq聊天小程序的代码实例


Posted in Python onMarch 06, 2019

Python 超简单的聊天程序

客户端:

import socket, sys
host = '10.248.27.23'
# host = raw_input("Plz imput destination IP:")
# data = raw_input("Plz imput what you want to submit:")
port = 51423
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
try:
  s.connect((host, port))
except socket.gaierror, e:
  print "Address-related error connecting to server: %s" %e
  sys.exit(1)
except socket.error, e:
  print "Connection error: %s" %e
  sys.exit(1)
while 1:
  try:
    data = raw_input("I say: ")
    s.send(data)
    buf = s.recv(1024)
    if len(buf):
      print "he say: "+buf
  except:
    print "Dialogue Over"
    s.close()
    sys.exit(0)

服务器:

import socket, traceback, sys
host = ''
port = 51423
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.bind((host, port))
s.listen(1)
ClientSock, ClientAddr = s.accept()
while 1:
  try:
    buf = ClientSock.recv(1024)
    if len(buf):
      print "he say: "+buf
    data = raw_input("I say: ")
    ClientSock.sendall(data)
  except:
    print "Dialogue Over"
    ClientSock.close()
    sys.exit(0)

模拟qq聊天,语言环境:Python3

示例代码:

# 编写一个程序,模拟qq聊天
# 要求:程序可以同时发消息和收消息,发和收的过程中程序不退出
# 思路:使用socket来完成(socket 是全双工模式,可以实现收和发同时进行),定义俩个线程,一个负责发消息、一个负责收消息
from threading import Thread
from socket import *
def rec_data():
  while True:
    rec_info = udpsocket.recvfrom(1024)
    print("\r>>%s:%s" % (rec_info[1], rec_info[0].decode("gb2312")))
    print("<<", end="")
def send_date():
  while True:
    send_mes = input("<<")
    udpsocket.sendto(send_mes.encode("gb2312"), (desip, desport))
udpsocket = None
desip = ""
desport = 0
def main():
  global udpsocket
  global desip
  global desport
  desip = input("对方IP:")
  desport = int(input("对方端口:"))
  udpsocket = socket(AF_INET, SOCK_DGRAM)
  udpsocket.bind(("", 9001))
  tr = Thread(target=rec_data)
  ts = Thread(target=send_date)
  tr.start()
  ts.start()
  tr.join()
  ts.join()
if __name__ == '__main__':
  main()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对三水点靠木的支持。如果你想了解更多相关内容请查看下面相关链接

Python 相关文章推荐
Python sys.path详细介绍
Oct 17 Python
探索Python3.4中新引入的asyncio模块
Apr 08 Python
Python批量转换文件编码格式
May 17 Python
Python输出9*9乘法表的方法
May 25 Python
详解python时间模块中的datetime模块
Jan 13 Python
基于asyncio 异步协程框架实现收集B站直播弹幕
Sep 11 Python
Python实现螺旋矩阵的填充算法示例
Dec 28 Python
Python操作MongoDB数据库的方法示例
Jan 04 Python
python3 中的字符串(单引号、双引号、三引号)以及字符串与数字的运算
Jul 18 Python
python实现简易学生信息管理系统
Apr 05 Python
Python使用matplotlib 画矩形的三种方式分析
Oct 31 Python
python orm 框架中sqlalchemy用法实例详解
Feb 02 Python
Python二叉树的镜像转换实现方法示例
Mar 06 #Python
Python实现二叉树的常见遍历操作总结【7种方法】
Mar 06 #Python
Python中一般处理中文的几种方法
Mar 06 #Python
Python学习笔记之视频人脸检测识别实例教程
Mar 06 #Python
Python学习笔记之图片人脸检测识别实例教程
Mar 06 #Python
详解django2中关于时间处理策略
Mar 06 #Python
Django使用AJAX调用自己写的API接口的方法
Mar 06 #Python
You might like
PHP 冒泡排序算法的实现代码
2010/08/08 PHP
判断PHP数组是否为空的代码
2011/09/08 PHP
ThinkPHP无限级分类原理实现留言与回复功能实例
2014/10/31 PHP
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
js 创建书签小工具之理论
2011/02/25 Javascript
javascript的数组和常用函数详解
2014/05/09 Javascript
关于JavaScript中name的意义冲突示例介绍
2014/05/29 Javascript
javascript的日期对象、数组对象、二维数组使用说明
2014/12/22 Javascript
Javascript页面跳转常见实现方式汇总
2015/11/28 Javascript
轻松掌握JavaScript单例模式
2016/08/25 Javascript
AngularJS服务service用法总结
2016/12/13 Javascript
Vue.js 60分钟快速入门教程
2017/03/28 Javascript
JS实现求数组起始项到终止项之和的方法【基于数组扩展函数】
2017/06/13 Javascript
Javascript实现异步编程的过程
2018/06/18 Javascript
layui的数据表格+springmvc实现搜索功能的例子
2019/09/28 Javascript
JavaScript手写数组的常用函数总结
2020/11/22 Javascript
[51:29]Alliance vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
一些Python中的二维数组的操作方法
2015/05/02 Python
Python实现读取邮箱中的邮件功能示例【含文本及附件】
2017/08/05 Python
PyQt5实现简易计算器
2020/05/30 Python
Python参数传递机制传值和传引用原理详解
2020/05/22 Python
Python3爬虫发送请求的知识点实例
2020/07/30 Python
python制作一个简单的gui 数据库查询界面
2020/11/19 Python
Html5内唤醒百度、高德APP的实现示例
2019/05/20 HTML / CSS
html5实现图片转圈的动画效果——让页面动起来
2017/10/16 HTML / CSS
蔻驰英国官网:COACH英国
2020/07/19 全球购物
海南地接欢迎词
2014/01/14 职场文书
幼师求职自荐信范文
2014/01/26 职场文书
领导参观欢迎词
2015/01/26 职场文书
怎样写观后感
2015/06/19 职场文书
2015年党建工作汇报材料
2015/06/25 职场文书
致运动员赞词
2015/07/22 职场文书
详解MySQL 联合查询优化机制
2021/05/10 MySQL
mysql在项目中怎么选事务隔离级别
2021/05/25 MySQL
Python获取指定日期是"星期几"的6种方法
2022/03/13 Python
git中cherry-pick命令的使用教程
2022/06/25 Servers