用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中os.path用法分析
Jan 15 Python
python以环状形式组合排列图片并输出的方法
Mar 17 Python
Python 爬虫之Beautiful Soup模块使用指南
Jul 05 Python
详解python算法之冒泡排序
Mar 05 Python
Python使用MyQR制作专属动态彩色二维码功能
Jun 04 Python
Python配置文件处理的方法教程
Aug 29 Python
关于tf.matmul() 和tf.multiply() 的区别说明
Jun 18 Python
python怎么调用自己的函数
Jul 01 Python
Pycharm编辑器功能之代码折叠效果的实现代码
Oct 15 Python
Python基于tkinter canvas实现图片裁剪功能
Nov 05 Python
Python爬虫之Selenium库的使用方法
Jan 03 Python
Python函数中apply、map、applymap的区别
Nov 27 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 多维数组排序实现代码
2009/08/05 PHP
php学习之变量的使用
2011/05/29 PHP
php通过修改header强制图片下载的方法
2015/03/24 PHP
Yii操作数据库实现动态获取表名的方法
2016/03/29 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
2017/04/01 PHP
PHP实现求连续子数组最大和问题2种解决方法
2017/12/26 PHP
Laravel框架中自定义模板指令总结
2017/12/17 PHP
laravel框架与其他框架的详细对比
2019/10/23 PHP
php 使用expat方式解析xml文件操作示例
2019/11/26 PHP
phpmyadmin在宝塔面板里进不去的解决方案
2020/07/06 PHP
javascipt匹配单行和多行注释的正则表达式
2013/11/20 Javascript
Javascript 构造函数详解
2014/10/22 Javascript
原生JS版和jquery版实现checkbox的全选/全不选/点选/行内点选(Mr.Think)
2016/10/29 Javascript
bootstrap datetimepicker日期插件使用方法
2017/01/13 Javascript
详解Vue-cli 创建的项目如何跨域请求
2017/05/18 Javascript
AngularJS实现的select二级联动下拉菜单功能示例
2017/10/25 Javascript
深入解读Node.js中的koa源码
2019/06/17 Javascript
微信小程序实现页面左右滑动
2020/11/16 Javascript
Python类的基础入门知识
2008/11/24 Python
详解python读取和输出到txt
2019/03/29 Python
Python对象转换为json的方法步骤
2019/04/25 Python
华为2019校招笔试题之处理字符串(python版)
2019/06/25 Python
使用python实现对元素的长截图功能
2019/11/14 Python
Python接口自动化判断元素原理解析
2020/02/24 Python
在django中实现choices字段获取对应字段值
2020/07/12 Python
Python中logger日志模块详解
2020/08/04 Python
电气自动化个人求职信范文
2014/02/03 职场文书
交通事故赔偿协议书
2014/04/15 职场文书
幼儿园课题方案
2014/06/09 职场文书
2014年基建工作总结
2014/12/12 职场文书
2015关爱留守儿童工作总结
2014/12/12 职场文书
边城读书笔记
2015/06/29 职场文书
初中物理教学反思
2016/02/19 职场文书
学校2016年全国助残日活动总结
2016/04/01 职场文书
解决pycharm下载库时出现Failed to install package的问题
2021/09/04 Python
Meta增速拉垮,元宇宙难当重任
2022/04/29 数码科技