用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和php通信乱码问题解决方法
Apr 15 Python
python中使用mysql数据库详细介绍
Mar 27 Python
python输出当前目录下index.html文件路径的方法
Apr 28 Python
深入理解Python中各种方法的运作原理
Jun 15 Python
Python统计单词出现的次数
Apr 04 Python
python pandas修改列属性的方法详解
Jun 09 Python
数组保存为txt, npy, csv 文件, 数组遍历enumerate的方法
Jul 09 Python
python实现连连看辅助(图像识别)
Mar 25 Python
解决pycharm 安装numpy失败的问题
Dec 05 Python
Python+PyQt5实现灭霸响指功能
May 25 Python
python selenium 获取接口数据的实现
Dec 07 Python
OpenCV-Python实现油画效果的实例
Jun 08 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设计模式 FlyWeight (享元模式)
2011/06/26 PHP
CodeIgniter CLI模式简介
2014/06/17 PHP
php绘制一个扇形的方法
2015/01/24 PHP
让textarea控件的滚动条怎是位与最下方
2007/04/20 Javascript
用javascript getComputedStyle获取和设置style的原理
2008/10/10 Javascript
JQuery Tips(3) 关于$()包装集内元素的改变
2009/12/14 Javascript
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
json数据处理技巧(字段带空格、增加字段、排序等等)
2013/06/14 Javascript
JavaScript对内存分配及管理机制详细解析
2013/11/11 Javascript
Jquery对select的增、删、改、查操作
2015/02/06 Javascript
jQuery使用$.get()方法从服务器文件载入数据实例
2015/03/25 Javascript
jQuery+AJAX实现无刷新下拉加载更多
2015/07/03 Javascript
JQuery解析XML的方法小结
2016/04/02 Javascript
jQuery插件zTree实现单独选中根节点中第一个节点示例
2017/03/08 Javascript
js判断数组是否包含某个字符串变量的实例
2017/11/24 Javascript
解决微信浏览器缓存站点入口文件(IIS部署Vue项目)
2019/06/17 Javascript
javascript实现导航栏分页效果
2019/06/27 Javascript
JS实现的进制转换,浮点数相加,数字判断操作示例
2019/11/09 Javascript
解决vue项目中页面调用数据 在数据加载完毕之前出现undefined问题
2019/11/14 Javascript
js blob类型url的视频下载问题的解决
2019/11/29 Javascript
JavaScript的console命令使用实例
2019/12/03 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
在Python中居然可以定义两个同名通参数的函数
2019/01/31 Python
Python BeautifulSoup [解决方法] TypeError: list indices must be integers or slices, not str
2019/08/07 Python
Python捕获异常堆栈信息的几种方法(小结)
2020/05/18 Python
Java基础知识面试要点
2016/07/29 面试题
Delphi工程师笔试题
2013/09/21 面试题
通信工程专业女生个人求职信
2013/09/21 职场文书
初中数学教学反思
2014/01/16 职场文书
中式餐厅创业计划书范文
2014/01/23 职场文书
超市中秋节活动方案
2014/02/12 职场文书
行政人事专员岗位职责
2014/03/05 职场文书
旅行社各个岗位职责
2014/03/15 职场文书
倡议书格式范文
2014/04/14 职场文书
小学生操行评语大全
2014/04/22 职场文书
Nginx如何限制IP访问只允许特定域名访问
2022/07/23 Servers