用Python写一个模拟qq聊天小程序的代码实例

 更新时间:2019年03月06日 16:26:51   作者:wdz306ling  
今天小编就为大家分享一篇关于用Python写一个模拟qq聊天小程序的代码实例,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧

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()

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。如果你想了解更多相关内容请查看下面相关链接

相关文章

  • NumPy 矩阵乘法的实现示例

    NumPy 矩阵乘法的实现示例

    这篇文章主要介绍了NumPy 矩阵乘法的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • Python实现将Markdown文档转为EPUB电子书文件

    Python实现将Markdown文档转为EPUB电子书文件

    这篇文章主要为大家详细介绍了Python如何实现将Markdown文档转为EPUB电子书文件,文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-06-06
  • Mac下使用HomeBrew安装python3

    Mac下使用HomeBrew安装python3

    这篇文章介绍了Mac下使用HomeBrew安装python3的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • Python实现在某个数组中查找一个值的算法示例

    Python实现在某个数组中查找一个值的算法示例

    今天小编就为大家分享一篇Python实现在某个数组中查找一个值的算法示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python实现FLV视频拼接功能

    Python实现FLV视频拼接功能

    这篇文章主要介绍了Python实现FLV视频拼接功能,本文给大家介绍的非常详细具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • 详解如何使用Pandas删除DataFrame中的非数字类型数据

    详解如何使用Pandas删除DataFrame中的非数字类型数据

    在数据处理和分析过程中,经常会遇到需要清洗数据的情况,本文将详细介绍如何使用Pandas删除DataFrame中的非数字类型数据,感兴趣的小伙伴可以了解下
    2024-03-03
  • Pandas数据处理库画图与文件读取使用示例

    Pandas数据处理库画图与文件读取使用示例

    这篇文章主要为大家介绍了Pandas数据处理库画图与文件读取使用示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-10-10
  • Python使用Beautiful Soup实现解析网页

    Python使用Beautiful Soup实现解析网页

    在这篇文章中,我们将介绍如何使用 Python 编写一个简单的网络爬虫,以获取并解析网页内容。我们将使用 Beautiful Soup 库,它是一个非常强大的库,用于解析和操作 HTML 和 XML 文档。让我们开始吧
    2023-05-05
  • CentOS7下安装python3.6.8的教程详解

    CentOS7下安装python3.6.8的教程详解

    这篇文章主要介绍了CentOS7下安装python3.6.8的教程,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-01-01
  • Python 3.x 安装opencv+opencv_contrib的操作方法

    Python 3.x 安装opencv+opencv_contrib的操作方法

    下面小编就为大家分享一篇Python 3.x 安装opencv+opencv_contrib的操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04

最新评论