用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里对list中的整数求平均并排序
Sep 12 Python
Python警察与小偷的实现之一客户端与服务端通信实例
Oct 09 Python
使用Python写CUDA程序的方法
Mar 27 Python
详解flask入门模板引擎
Jul 18 Python
PyQt5实现简易计算器
May 30 Python
pandas实现将dataframe满足某一条件的值选出
Jun 12 Python
python 数据生成excel导出(xlwt,wlsxwrite)代码实例
Aug 23 Python
Python进程池Pool应用实例分析
Nov 27 Python
Python实现新型冠状病毒传播模型及预测代码实例
Feb 05 Python
Pycharm新手使用教程(图文详解)
Sep 17 Python
python3使用diagrams绘制架构图的步骤
Apr 08 Python
Python中使用Opencv开发停车位计数器功能
Apr 04 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引用返回与取消引用的详解
2013/06/08 PHP
Youku 视频绝对地址获取的方法详解
2013/06/26 PHP
php使用post数组的键值创建同名变量并赋值的方法
2015/04/03 PHP
PHP读取PPT文件的方法
2015/12/10 PHP
通过PHP简单实例介绍文件上传
2015/12/16 PHP
PHP常用算法和数据结构示例(必看篇)
2017/03/15 PHP
php实现的redis缓存类定义与使用方法示例
2017/08/09 PHP
PHP实现从上往下打印二叉树的方法
2018/01/18 PHP
关于 byval 与 byref 的区别分析总结
2007/10/08 Javascript
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
登陆成功后自动计算秒数执行跳转
2014/01/23 Javascript
javascript 终止函数执行操作
2014/02/14 Javascript
jquery无法设置checkbox选中即没有变成选中状态
2014/03/27 Javascript
jquery 取子节点及当前节点属性值的方法
2014/08/24 Javascript
javascript编写贪吃蛇游戏
2015/07/07 Javascript
JavaScript中的this关键字使用详解
2015/08/14 Javascript
AngularJS控制器controller正确的通信的方法
2016/01/25 Javascript
Node.js中常规的文件操作总结
2016/10/13 Javascript
jQuery鼠标悬停内容动画切换效果
2017/04/27 jQuery
node koa2实现上传图片并且同步上传到七牛云存储
2017/07/31 Javascript
使用DataTable插件实现异步加载数据
2017/11/19 Javascript
原生JavaScript实现remove()和recover()功能示例
2018/07/24 Javascript
浅谈redux以及react-redux简单实现
2018/08/28 Javascript
JS立即执行函数功能与用法分析
2019/01/15 Javascript
Vue基于vuex、axios拦截器实现loading效果及axios的安装配置
2019/04/26 Javascript
vue-cli3 项目优化之通过 node 自动生成组件模板 generate View、Component
2019/04/30 Javascript
用 js 写一个 js 解释器过程详解
2019/08/02 Javascript
[00:57]林俊杰助阵DOTA2亚洲邀请赛
2015/01/28 DOTA
django如何自己创建一个中间件
2019/07/24 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
Django数据库操作之save与update的使用
2020/04/01 Python
如何基于线程池提升request模块效率
2020/04/18 Python
师范毕业生自荐信
2013/10/17 职场文书
工商管理实习生自我鉴定范文
2013/12/18 职场文书
2014年有孩子的离婚协议书范本
2014/10/08 职场文书
党员个人自我评价
2015/03/03 职场文书