用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
投稿
猜你喜欢
- 奥运来了,三大门户网站都加上了奥运主题。加上下面代码你的网站也拥有奥运主题了:<style type="text/
- 1.漏洞介绍在XHTML 1.0标准下,使用特殊构造的CSS样式,在Internet Explorer 7.0
- 在SQL SERVER中,你可能需要获得当前日期和计算一些其他的日期,例如,你的程序可能需要判断一个月的第一天或者最后一天。你们大部分人大概
- 阅读上一篇:W3C优质网页小贴士(一) 使用 alt 属性描述每幅图像alt 属性有什么用?alt 属性可以在一系列标签中使用(如
- 假如一个页面中的文本采用的都是同样的字体、同样的字号、同样的颜色,做为读者的你能轻易的区分出哪里是标题,哪里是正文内容吗?所以通常情况下,设
- 在给一个 App 做 API,从服务器端的 MySQL 取出数据,然后生成 JSON。数据中有个字段叫 content,里面保存了文章内容,
- 即使在不太复杂的样式表中,也可能会有两个或者更多个规则找到同一元素。CSS通过一个叫做层叠(cascade)的过程处理这种冲突。
- 一、使用ddt和data装饰器的大致框架如下,每个test_开头的方法,代表一条测试用例from ddt import ddt,dataim
- 代码如下:'===================================== '转换内容,防止意外 '==
- 1,七层网络协议应表会传网数物:应用层、表示层、会话层: (这三层又可以合并为应用层,这样就是五层网络协议【osi五层协议】) python
- table通过使用下面语句创建:create table userinfo(name text, email text)更快地插入数据在此用
- jqGrid是一个优秀的基于jQuery的DataGrid框架,想必大伙儿也不陌生,网上基于ASP的资料很少,我提供一个,数据格式是json
- 一,通用的ASCII码对照表 图解ASCII码对照表图,以字符A为例Dec表示十进制,如65Hx表示十六进制,如41Oct表示八进制,如10
- 1.在查询分析器理启动或停止SQL Agent服务启动:use mastergoxp_cmdshell 'net start SQL
- 前言在golang语言中,select语句 就是用来监听和channel有关的IO操作,当IO操作发生时,触发相应的case动作。有了 se
- <script language="javascript"><!-- var&n
- 升级了浏览器到IE9,今天进入公司网站后台突然发现有些页面进不去了,F12调试显示有JS错误:DOM Exception: INVALID_
- 中文简繁体网页的转换FrontPage 2002提供了中文简繁体转换的功能。只要轻轻一点就可做出简体或繁体中文网站了。如要将当前
- 变量赋值与对象赋值对比<?php // 声明一个变量并赋值 $a = 1; // 将数据类型
- 代码如下:# -*- coding: utf-8 -*-#!/usr/bin/python# filename: todo.py# code