用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 21 Python
深入理解Python中装饰器的用法
Jun 28 Python
python学生管理系统代码实现
Apr 05 Python
Python 在字符串中加入变量的实例讲解
May 02 Python
判断python对象是否可调用的三种方式及其区别详解
Jan 31 Python
谈谈Python中的while循环语句
Mar 10 Python
Python交互式图形编程的实现
Jul 25 Python
python采集百度搜索结果带有特定URL的链接代码实例
Aug 30 Python
python二维键值数组生成转json的例子
Dec 06 Python
django model object序列化实例
Mar 13 Python
Python使用pyexecjs代码案例解析
Jul 13 Python
Python3+Flask安装使用教程详解
Feb 16 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 无线电
十天学会php之第十天
2006/10/09 PHP
《PHP边学边教》(02.Apache+PHP环境配置――上篇)
2006/12/13 PHP
PHP Token(令牌)设计
2008/03/15 PHP
利用PHP实现短域名互转
2013/07/05 PHP
PHP中把数据库查询结果输出为json格式简单实例
2015/04/09 PHP
javascript 放大镜效果js组件 qsoft.PopBigImage.v0.35 加入了chrome支持
2009/04/07 Javascript
js面向对象设计用{}好还是function(){}好(构造函数)
2011/10/23 Javascript
Jquery实现简单的动画效果代码
2012/03/18 Javascript
浅谈Unicode与JavaScript的发展史
2015/01/19 Javascript
js控制网页背景音乐播放与停止的方法
2015/02/06 Javascript
JS实现自定义简单网页软键盘效果代码
2015/11/05 Javascript
基于jQuery实现Ajax验证用户名是否存在实例
2016/03/30 Javascript
vue.js实现表格合并示例代码
2016/11/30 Javascript
利用nginx + node在阿里云部署https的步骤详解
2017/12/19 Javascript
详解react-router 4.0 下服务器如何配合BrowserRouter
2017/12/29 Javascript
详解html-webpack-plugin用法全解
2018/01/22 Javascript
微信小程序使用setData修改数组中单个对象的方法分析
2018/12/30 Javascript
微信小程序 组件的外部样式externalClasses使用详解
2019/09/06 Javascript
使用vue重构资讯页面的实例代码解析
2019/11/26 Javascript
JavaScript实现文件下载并重命名代码实例
2019/12/12 Javascript
Chrome插件开发系列一:弹窗终结者开发实战
2020/10/02 Javascript
[04:37]DOTA2英雄梦之声Vol20发条
2014/06/20 DOTA
[01:14:41]DOTA2-DPC中国联赛定级赛 iG vs Magma BO3第一场 1月8日
2021/03/11 DOTA
Python中异常重试的解决方案详解
2017/05/05 Python
解决python3 HTMLTestRunner测试报告中文乱码的问题
2018/12/17 Python
Python面向对象程序设计构造函数和析构函数用法分析
2019/04/12 Python
Python数据可视化实现正态分布(高斯分布)
2019/08/21 Python
Python散点图与折线图绘制过程解析
2019/11/30 Python
Python数据模型与Python对象模型的相关总结
2021/01/26 Python
党校学习思想汇报
2014/01/06 职场文书
便利店投资创业计划书
2014/02/08 职场文书
处级领导班子全部召开专题民主生活会情况汇报
2014/09/27 职场文书
2015年公司新年寄语
2014/12/08 职场文书
淮阳太昊陵导游词
2015/02/10 职场文书
vue中div禁止点击事件的实现
2022/04/02 Vue.js