用Python写一个模拟qq聊天小程序的代码实例
作者:wdz306ling 发布时间:2022-04-01 10:01:42
标签: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()
来源:https://blog.csdn.net/wdz306ling/article/details/86623436
0
投稿
猜你喜欢
- 本文实例讲述了Python机器学习算法库scikit-learn学习之决策树实现方法。分享给大家供大家参考,具体如下:决策树决策树(DTs)
- 下面是具体的步骤,试用于pycharm2016(亲测)1. File-->settings-->editor--&g
- 前言:相比大家都听过自动化生产线、自动化办公等词汇,在没有人工干预的情况下,机器可以自己完成各项任务,这大大提升了工作效率。编程世界里有各种
- JSON简介JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,它基于ECMAScript的一个子集
- 炸金花题目很简单:就是自己写一个程序,实现诈金花游戏的发牌、判断输赢。规则:一付扑克牌,去掉大小王,每个玩家发3张牌,最后比大小,看谁赢。牌
- 一定要注重代码规范,按照平时的代码管理,可以将Python代码规范检测分为两种:静态本地检测:可以借助静态检查工具,比如:Flake8,Py
- import randomdef genrand(small, big) : return small
- 前言现在我能一整天都严肃地盯着屏幕,看起来就像在很认真地工作,利用摸鱼,打开小说,可实行完美摸鱼,实时保存进度用PYQT5 Mock一个摸鱼
- resources文件下面有一个lang文件夹下面有一个en文件夹,这里就是后面要使用到的存放语言的语言包的地方了。下面设置app.php里
- 本文实例为大家分享了wxPython色环电阻计算器的具体代码,供大家参考,具体内容如下import wx # 导入wxPythonclass
- 成为一个顶级设计师的第一准则:限制你的字体让你成为设计大的七个基本原则之一好~设计大师,或者也太吹牛了吧,但根据下面七个基本原则至少你可以成
- 一.目标浏览网页的时候,看见哪个元素,就能截取哪个元素当图片,不管那个元素有多长 二.所用工具和第三方库python ,PIL,s
- 今天在网上找了一下Microsoft Enterprise Library 5.0 如何集成MySQL数据库, 结果只找到了entlib 4
- 很早以前就说过,IE8的标准模式已经不再支持滤镜了,不过IE仍然留了一条后路,你可以在CSS中这样写滤镜:-ms-filter
- 服务端渲染及session鉴权服务端渲染服务端渲染简单来说就是前端页面是由服务器通过字符串拼接动态生成的,客户端不需要额外通过Ajax请求参
- viper作为配置框架,其功能非常的强大,我们没有理由不去了解一下。我们先看官网对它的功能简介:viper是完整配置解决方案,他可以处理所有
- 对于Linux用户而言,命令行操作我们已经非常熟悉了。与其他流行的操作系统不同,在Linux社区中,使用命令行与使用图形用户界面执行类似任务
- PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4
- 很多人说设计是力求细节的,在网页设计里表达出的细节就是图标。图标在一个设计里带来了额外的注解并且使设计里的对象和元素引起用户的注意。以下介绍
- 写在前面的话关于《交互设计实用指南》,我们最近收到很多朋友的反馈,有支持的也有批评的,在此一并感谢了,有你们的关注,我们才能走得更远。《交互