用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下线程之间的共享和释放示例
May 04 Python
浅析Python基础-流程控制
Mar 18 Python
基于pandas数据样本行列选取的方法
Apr 20 Python
将Dataframe数据转化为ndarry数据的方法
Jun 28 Python
如何将你的应用迁移到Python3的三个步骤
Dec 22 Python
通过 Python 和 OpenCV 实现目标数量监控
Jan 05 Python
Mac PyCharm中的.gitignore 安装设置教程
Apr 16 Python
python如何输出反斜杠
Jun 18 Python
python subprocess pipe 实时输出日志的操作
Dec 05 Python
python中判断数字是否为质数的实例讲解
Dec 06 Python
Python中BeautifulSoup通过查找Id获取元素信息
Dec 07 Python
python re模块常见用法例举
Mar 01 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
浅谈电磁辐射对健康的影响
2021/03/01 无线电
《DOTA3》开发工作已经开始 《DOTA3》将代替《DOTA2》
2021/03/06 DOTA
php 安全过滤函数代码
2011/05/07 PHP
php快递单号查询接口使用示例
2014/05/05 PHP
表单提交错误后返回内容消失问题的解决方法(PHP网站)
2015/10/20 PHP
js脚本学习 比较实用的基础
2006/09/07 Javascript
js 页面输出值
2008/11/30 Javascript
jquery异步循环获取功能实现代码
2010/09/19 Javascript
JavaScript 原型学习总结
2010/10/29 Javascript
jQuery 名称冲突的解决方法
2011/04/08 Javascript
体验js中splice()的强大(插入、删除或替换数组的元素)
2013/01/16 Javascript
JQuery分别取得每行最后一列和最后一行的示例代码
2013/08/18 Javascript
关于img的href和src取变量及赋值的方法
2014/04/28 Javascript
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
javascript常用的方法整理
2015/08/20 Javascript
微信小程序进行微信支付的步骤昂述
2016/12/01 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
详解Vue 中 extend 、component 、mixins 、extends 的区别
2017/12/20 Javascript
移动端图片上传旋转、压缩问题的方法
2018/10/16 Javascript
react+ant design实现Table的增、删、改的示例代码
2018/12/27 Javascript
使用jquery的cookie实现登录页记住用户名和密码的方法
2019/03/13 jQuery
javascript面向对象三大特征之多态实例详解
2019/07/24 Javascript
微信小程序中button去除默认的边框实例代码
2019/08/01 Javascript
在Django的模型和公用函数中使用惰性翻译对象
2015/07/27 Python
python如何制作缩略图
2019/04/30 Python
python爬虫爬取网页数据并解析数据
2020/09/18 Python
Python+unittest+DDT实现数据驱动测试
2020/11/30 Python
详解CSS3中Media Queries的相关使用
2015/07/17 HTML / CSS
html5中地理位置定位api接口开发应用小结
2013/01/04 HTML / CSS
详解Html5 监听拦截Android返回键方法
2018/04/18 HTML / CSS
装修活动策划方案
2014/08/27 职场文书
银行会计主管岗位职责
2014/10/01 职场文书
个人租房协议书(范本)
2014/10/14 职场文书
孔子观后感
2015/06/08 职场文书
公文写作:教你写“建议书”
2019/05/07 职场文书
小学秋季运动会加油口号及加油稿
2019/08/19 职场文书