用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中的面向对象编程的概念
Apr 27 Python
Python工程师面试题 与Python基础语法相关
Jan 14 Python
Python中operator模块的操作符使用示例总结
Jun 28 Python
分享一个可以生成各种进制格式IP的小工具实例代码
Jul 28 Python
使用paramiko远程执行命令、下发文件的实例
Oct 01 Python
Python使用smtp和pop简单收发邮件完整实例
Jan 09 Python
Python网络编程之TCP套接字简单用法示例
Apr 09 Python
对Python3中的print函数以及与python2的对比分析
May 02 Python
Python远程视频监控程序的实例代码
May 05 Python
在pytorch中为Module和Tensor指定GPU的例子
Aug 19 Python
Python生成器next方法和send方法区别详解
May 30 Python
python opencv 实现读取、显示、写入图像的方法
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
第十一节 重载 [11]
2006/10/09 PHP
使用Discuz关键词服务器实现PHP中文分词
2014/03/11 PHP
php中try catch捕获异常实例详解
2014/11/21 PHP
php中简单的对称加密算法实现
2017/01/05 PHP
YII2框架中使用yii.js实现的post请求
2017/04/09 PHP
基于SVG的web页面图形绘制API介绍及编程演示
2013/06/28 Javascript
JQuery对表格进行操作的常用技巧总结
2014/04/23 Javascript
Bootstrap富文本组件wysiwyg数据保存到mysql的方法
2016/05/09 Javascript
AngularJS基础 ng-selected 指令简单示例
2016/08/03 Javascript
JavaScript兼容性总结之获取非行间样式案例
2016/08/07 Javascript
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
详解微信小程序之scroll-view的flex布局问题
2019/01/16 Javascript
Node.js之readline模块的使用详解
2019/03/25 Javascript
Koa 中的错误处理解析
2019/04/09 Javascript
微信小程序实现搜索指定景点周边美食、酒店
2019/05/18 Javascript
微信小程序网络请求实现过程解析
2019/11/06 Javascript
vue中echarts图表大小适应窗口大小且不需要刷新案例
2020/07/19 Javascript
解决vue的touchStart事件及click事件冲突问题
2020/07/21 Javascript
[01:20]DOTA2上海特级锦标赛现场采访:谁的ID最受青睐
2016/03/25 DOTA
Python彩色化Linux的命令行终端界面的代码实例分享
2016/07/02 Python
Python中扩展包的安装方法详解
2017/06/14 Python
Python面向对象之反射/自省机制实例分析
2018/08/24 Python
python实现多人聊天室
2020/03/31 Python
python实现kmp算法的实例代码
2019/04/03 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
使用Python调取任意数字资产钱包余额功能
2019/08/15 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
详解python tkinter包获取本地绝对路径(以获取图片并展示)
2020/09/04 Python
css3实现文字扫光渐变动画效果的示例
2017/11/07 HTML / CSS
html5适合移动应用开发的12大特性
2014/03/19 HTML / CSS
台湾屈臣氏网路商店:Watsons台湾
2020/12/29 全球购物
违反交通安全法检讨书
2014/10/24 职场文书
中班下学期个人工作总结
2015/02/12 职场文书
2015暑假打工实践报告
2015/07/13 职场文书
《金色的草地》教学反思
2016/02/17 职场文书
React 高阶组件HOC用法归纳
2021/06/13 Javascript