用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 02 Python
Python中atexit模块的基本使用示例
Jul 08 Python
Python爬虫_城市公交、地铁站点和线路数据采集实例
Jan 10 Python
对numpy的array和python中自带的list之间相互转化详解
Apr 13 Python
利用pandas进行大文件计数处理的方法
Jul 25 Python
基于python历史天气采集的分析
Feb 14 Python
对python中的控制条件、循环和跳出详解
Jun 24 Python
Django的用户模块与权限系统的示例代码
Jul 24 Python
PyTorch 导数应用的使用教程
Aug 31 Python
python 使用xlsxwriter循环向excel中插入数据和图片的操作
Jan 01 Python
python使用numpy中的size()函数实例用法详解
Jan 29 Python
Python编写nmap扫描工具
Jul 21 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读取文件内容至字符串中,同时去除换行、空行、行首行尾空格(Zjmainstay原创)
2012/07/31 PHP
IIS6.0 开启Gzip方法及PHP Gzip函数分享
2014/06/08 PHP
Linux系统中设置多版本PHP共存配合Nginx服务器使用
2015/12/21 PHP
PHP按指定键值对二维数组进行排序的方法
2015/12/22 PHP
ExtJS 学习专题(一) 如何应用ExtJS(附实例)
2010/03/11 Javascript
JQuery动画和停止动画实例代码
2013/03/01 Javascript
jQuery中实现动画效果的基本操作介绍
2013/04/16 Javascript
js 获取、清空input type=&quot;file&quot;的值(示例代码)
2013/12/24 Javascript
jquery SweetAlert插件实现响应式提示框
2015/08/18 Javascript
JavaScript运行过程中的“预编译阶段”和“执行阶段”
2015/12/16 Javascript
JS实现HTML表格排序功能
2016/08/05 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
vue中使用axios post上传头像/图片并实时显示到页面的方法
2018/09/27 Javascript
vue-cli webpack配置文件分析
2019/05/20 Javascript
使用JS判断页面是首次被加载还是刷新
2019/05/26 Javascript
JS实现基本的网页计算器功能示例
2020/01/16 Javascript
跟老齐学Python之有容乃大的list(1)
2014/09/14 Python
Python中使用Tkinter模块创建GUI程序实例
2015/01/14 Python
Python实现的根据IP地址计算子网掩码位数功能示例
2018/05/23 Python
python实现windows下文件备份脚本
2018/05/27 Python
python 自动重连wifi windows的方法
2018/12/18 Python
Pandas0.25来了千万别错过这10大好用的新功能
2019/08/07 Python
Python:合并两个numpy矩阵的实现
2019/12/02 Python
Python 抓取数据存储到Redis中的操作
2020/07/16 Python
html5 datalist 选中option选项后的触发事件
2020/03/05 HTML / CSS
英国网络托管和域名领导者:Web Hosting UK
2017/10/15 全球购物
西安启天科技有限公司网络工程师面试题笔试题
2016/06/12 面试题
自荐信的基本格式
2014/02/22 职场文书
超市活动计划书
2014/04/24 职场文书
法院个人总结
2015/03/03 职场文书
关于召开会议的通知
2015/04/15 职场文书
呼兰河传读书笔记
2015/06/30 职场文书
文明礼貌主题班会
2015/08/14 职场文书
MySQL主从搭建(多主一从)的实现思路与步骤
2021/05/13 MySQL
redis cluster支持pipeline的实现思路
2021/06/23 Redis
CentOS下安装Jenkins的完整步骤
2022/04/07 Servers