用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迭代器和生成器介绍
Mar 06 Python
python在windows下实现ping操作并接收返回信息的方法
Mar 20 Python
使用Python的Django框架结合jQuery实现AJAX购物车页面
Apr 11 Python
读取本地json文件,解析json(实例讲解)
Dec 06 Python
python多进程使用及线程池的使用方法代码详解
Oct 24 Python
python将视频转换为全字符视频
Apr 26 Python
Python 实现OpenCV格式和PIL.Image格式互转
Jan 09 Python
Python如何用filter函数筛选数据
Mar 05 Python
Python中SQLite如何使用
May 27 Python
python json.dumps() json.dump()的区别详解
Jul 14 Python
python批量提取图片信息并保存的实现
Feb 05 Python
Python之matplotlib绘制折线图
Apr 13 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 高手之路(三)
2006/10/09 PHP
PHP与SQL注入攻击[三]
2007/04/17 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
Laravel 简单实现Ajax滚动加载示例
2019/10/22 PHP
在Z-Blog中运行代码[html][/html](纯JS版)
2007/03/25 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
2014/08/16 Javascript
jQuery 实现评论等级好评差评特效
2016/05/06 Javascript
JS实现页面载入时随机显示图片效果
2016/09/07 Javascript
Vue.js简易安装和快速入门(第二课)
2017/10/17 Javascript
vue.js  父向子组件传参的实例代码
2017/10/29 Javascript
JS基于对象的链表实现与使用方法示例
2019/01/31 Javascript
百度小程序之间的页面通信过程详解
2019/07/18 Javascript
解决在layer.open中使用时间控件laydate失败的问题
2019/09/11 Javascript
vue请求数据的三种方式
2020/03/04 Javascript
python ElementTree 基本读操作示例
2009/04/09 Python
举例区分Python中的浅复制与深复制
2015/07/02 Python
Django框架中render_to_response()函数的使用方法
2015/07/16 Python
python3.5使用tkinter制作记事本
2016/06/20 Python
python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解
2017/11/24 Python
利用Python将每日一句定时推送至微信的实现方法
2018/08/13 Python
在Python中实现shuffle给列表洗牌
2018/11/08 Python
对python实现模板生成脚本的方法详解
2019/01/30 Python
Django实现基于类的分页功能
2019/10/31 Python
Django admin禁用编辑链接和添加删除操作详解
2019/11/15 Python
pygame编写音乐播放器的实现代码示例
2019/11/19 Python
细数nn.BCELoss与nn.CrossEntropyLoss的区别
2020/02/29 Python
python 无损批量压缩图片(支持保留图片信息)的示例
2020/09/22 Python
基于python爬取梨视频实现过程解析
2020/11/09 Python
python实现图像随机裁剪的示例代码
2020/12/10 Python
python上下文管理器异常问题解决方法
2021/02/07 Python
LocalStorage记住用户和密码功能
2017/07/24 HTML / CSS
什么是Assembly(程序集)
2014/09/14 面试题
2014年房地产个人工作总结
2014/12/20 职场文书
入党积极分子培养人意见
2015/06/02 职场文书
三八妇女节致辞
2015/07/31 职场文书
解决Golang中goroutine执行速度的问题
2021/05/02 Golang