用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 相关文章推荐
apache部署python程序出现503错误的解决方法
Jul 24 Python
python利用百度AI实现文字识别功能
Nov 27 Python
Python常见数据结构之栈与队列用法示例
Jan 14 Python
tensorflow 固定部分参数训练,只训练部分参数的实例
Jan 20 Python
Python列表list操作相关知识小结
Jan 29 Python
python matplotlib imshow热图坐标替换/映射实例
Mar 14 Python
基于matplotlib中ion()和ioff()的使用详解
Jun 16 Python
python操作微信自动发消息的实现(微信聊天机器人)
Jul 14 Python
详解Pycharm与anaconda安装配置指南
Aug 25 Python
Python常用模块函数代码汇总解析
Aug 31 Python
python线程优先级队列知识点总结
Feb 28 Python
Selenium浏览器自动化如何上传文件
Apr 06 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
Pain 全世界最小最简单的PHP模板引擎 (普通版)
2011/10/23 PHP
深入理解PHP中的Session和Cookie
2013/06/21 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
PHP实现QQ空间自动回复说说的方法
2015/12/02 PHP
CI框架出现mysql数据库连接资源无法释放的解决方法
2016/05/17 PHP
javascript CSS画图之基础篇
2009/07/29 Javascript
js 获取坐标 通过JS得到当前焦点(鼠标)的坐标属性
2013/01/04 Javascript
用JS实现3D球状标签云示例代码
2013/12/01 Javascript
node.js中的fs.stat方法使用说明
2014/12/16 Javascript
举例说明如何为JavaScript的方法参数设置默认值
2015/11/17 Javascript
JS原型对象的创建方法详解
2016/06/16 Javascript
BootStrap 下拉菜单点击之后不会出现下拉菜单(下拉菜单不弹出)的解决方案
2016/12/14 Javascript
Bootstrap禁用响应式布局的实现方法
2017/03/09 Javascript
JavaScript中 DOM操作方法小结
2017/04/25 Javascript
Angular中使用MathJax遇到的一些问题
2017/12/15 Javascript
nodejs aes 加解密实例
2018/10/10 NodeJs
jQuery访问json文件中数据的方法示例
2019/01/28 jQuery
关于vue组件事件属性穿透详解
2019/10/28 Javascript
nodejs+express最简易的连接数据库的方法
2020/12/23 NodeJs
python 将json数据提取转化为txt的方法
2018/10/26 Python
pip安装py_zipkin时提示的SSL问题对应
2018/12/29 Python
Appium+python自动化之连接模拟器并启动淘宝APP(超详解)
2019/06/17 Python
Python数据结构与算法(几种排序)小结
2019/06/22 Python
Python3内置模块之base64编解码方法详解
2019/07/13 Python
python3.8 微信发送服务器监控报警消息代码实现
2019/11/05 Python
Python进行统计建模
2020/08/10 Python
HTML5 canvas基本绘图之绘制曲线
2016/06/27 HTML / CSS
瑞典灯具和照明网上商店:Lamp24.se
2018/03/17 全球购物
木马的传播途径主要有哪些
2016/04/08 面试题
大学毕业生自我鉴定
2013/11/05 职场文书
航空学院求职信
2014/06/11 职场文书
学校创先争优活动总结
2014/08/28 职场文书
部门2014年度工作总结
2014/11/12 职场文书
医院党建工作总结2015
2015/05/26 职场文书
HR在给员工开具离职证明时,需要注意哪些问题?
2019/07/03 职场文书
python plt.plot bar 如何设置绘图尺寸大小
2021/06/01 Python