python 制作聊天程序-python实现点对点聊天程序
用Python实现点对点的聊天,2个程序,一个是client.py,一个是server.py,通过本机地址127.0.0.1连接进行通信,利用多线程把发送消息和接收消息分开独立进行。
client代码:
import socket
import sys
import threading
import time
class client():
def __init__(self):
self.s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
self.ip = "127.0.0.1"
def connect(self):
try:
self.s.connect((self.ip,8888))
print("connect success")
print("connect time: "+time.ctime())
except ConnectionError:
print("connect error")
sys.exit(-1)
except:
print("unexpect error")
sys.exit(-1)
def send_sth(self):
while True:
sth=input("say something: ")
try:
self.s.sendall(sth.encode("utf-8"))
except ConnectionError:
print("connect error")
sys.exit(-1)
except:
print("unexpect error")
sys.exit(-1)
def receive(self):
while True:
try:
r=self.s.recv(1024)
print ("get message:"+r.decode("utf-8"))
except ConnectionError:
print("connect error")
sys.exit(-1)
except:
print("unexpect error")
sys.exit(-1)
c1 = client()
c1.connect()
threading._start_new_thread(c1.receive,())
c1.send_sth()
server代码:
import socket
import sys
import threading
import time
def server():
def bind():
HOST="127.0.0.1"
s.bind((HOST,8888))
print("bind ok")
def listen():
s.listen(10)
print ("Socket now listening")
def send_sth(conn):
while True:
try:
sth=input("say something: ")
conn.sendall(sth.encode("utf-8"))
except ConnectionError:
print("connect error")
sys.exit(-1)
except:
print("unexpect error")
sys.exit(-1)
def recv(conn):
while True:
try:
data=conn.recv(1024)
data2=data.decode("utf-8")
print("get message:"+data2)
except ConnectionError:
print("connect error")
sys.exit(-1)
except:
print("unexpect error")
sys.exit(-1)
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
bind()
listen()
conn,addr=s.accept()
print("connect success")
print("connect time: "+time.ctime())
threading._start_new_thread(recv,(conn,))
send_sth(conn)
if __name__=="__main__":
server()
开启多线程有2种方法,上面2个程序都是用函数的方法,还有一种方法是用类继承threading类
代码:
import socket
import threading
class client(threading.Thread):
def __init__(self,sth):
threading.Thread.__init__(self)
self.sth=sth
def run(self):
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ip="127.0.0.1"
try:
s.connect((ip,8888))
except :
print("con error")
exit()
#print("connect success")
s.sendall(self.sth.encode("utf-8"))
#print("send success")
try:
r=s.recv(1024)
except:
print("recv error")
exit()
print (r.decode("utf-8"))
c1=client("hello 1")
c1.start()
c2=client("hello 2")
c2.start()
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
python 制作聊天程序-python实现点对点聊天程序相关推荐
- 教你如何用python制作黑板模拟器 python 项目小发明 【安安教具】-【工具】-【黑板】模拟器
黑板模拟器是一个多线程控制尝试,需要做到通过tkinter实现对鼠标的控制和监督.鼠标在移动时会有一个线程来检测鼠标的位置,计算窗口的位置,计算出鼠标在窗口中的位置,结合canvas画布实现对黑板的涂 ...
- 如何用python制作温度计模拟器 python项目小发明 【安安教具】-【物理】-【温度计】模拟器
温度计测量水温的过程要满足如下条件: 1.不能碰烧杯底. 2.不能碰烧杯壁. 设计一款动手实践上面过程的软件,就是接下来要完成的~ 我们先看一下效果: 如何用python制作温度计模拟器 python ...
- 如何用html5实现网页聊天,HTML5 WebSocket实现点对点聊天的示例代码
HTML5的websocket与Tomcat实现了多人聊天,那是最简单也是最基本的,其中注意的就是开发环境,要满足jdk1.7和tomcat8,当然了tom7的7.063也行,在网站上找到了用goog ...
- 教你如何用python制作三角形模拟器 python项目小发明 【安安教具】-【数学】-【三角形】模拟器
三角形的三个点互相连接组成了一个平面图形,我们如何用python制作一个可以展示各种三角形的软件呢? 我们先看看效果: 这个东西要如何使用呢?我们看一下视频: 三角形模拟器 可以看到,控制三角形的三个 ...
- 教你用Python制作一款自己的杀毒程序
在本文中,我们将介绍恶意软件静态分析的基础知识.静态分析是对程序文件的反汇编代码.图形图像.可打印字符串和其他磁盘资源进行分析,是一种不需要实际运行程序的逆向工程.虽然静态分析技术有欠缺之处,但是它可 ...
- Python制作【大麦网】抢票程序,看演唱会再也不怕没票了
前言 大麦网,是中国综合类现场娱乐票务营销平台,业务覆盖演唱会. 话剧.音乐剧.体育赛事等领域. 但是因为票数有限,还有黄牛们不能丢了饭碗,所以导致了,很多人都抢不到票 那么,今天带大家用Python ...
- 3行代码,用Python制作一个整蛊朋友的病毒小程序
前言 就是无聊做出来玩玩的,程序是无害的 前几天朋友一直问我要爬取妹子图片的源码,然后又要爬取妹子视频的源码 被问烦了以后我就打算给他一个小小的惊喜 代码如下: 这一段代码的作用就是一个无限弹窗 让我 ...
- 使用Python制作一个照片换底色的exe程序文件(详细教程)
文章目录 前言 一.安装相对应的库 二.关于图片处理 1.关于RemoveBg 2.图片处理代码编写 3.窗口图片选择以及提示函数 4.可视化窗口 5.打包成exe程序 写在最后 前言 在校大学生,突 ...
- python 网页设计_使用Python制作获取网站目录的图形化程序
1.pyqt4写的界面 find_ui.py #-*- coding: utf-8 -*- from PyQt4 import QtCore, QtGui try: _fromUtf8 = QtCor ...
- 数独游戏python制作_使用Python编写数独游戏自动出题程序
数独是一个很好玩的游戏,可以锻炼推理能力.下面的代码可以自动生成数独游戏题目. from random import shuffle, randrange def generate(): # 初始网格 ...
最新文章
- 运营商部署4.5G热情高涨:将影响5G商用
- (golang)HTTP基本认证机制及使用gocolly登录爬取
- 美国计算机科学发展,美国计算机工程发展现状
- Google编程题:最小操作数
- Mendix将升级低代码软件开发平台,发布全新数字化生态系统、行业云
- 开关电源中的磁性元件书籍_总结丨PFC开关电源的效率优化措施
- linux内核中TCP接收的实现
- springboot2.x 集成百度 uidgenerator
- 百度音乐高调改名后 掉队的千千音乐还有机会吗?
- 海美迪h7四代刷Linux,海美迪H7四代怎么安装第三方软件看电视直播
- Netty游戏服务器实战开发(11):Spring+mybatis 手写分库分表策略(续)
- 响应式与自适应设计:设计师的最佳选择是什么?
- Java实时报表统计查询慢_如何解决报表关联计算中的性能问题
- 验证码获取及解加密(模拟人进入网页获取数据)
- Apache Lucene - Building and Installing the Basic Demo
- 岭南学院python课程作业1
- c语言函数可视化,求在已经完成的c语言程序《万年历》中添加可视化效果
- 详细的springboot整合activeMq安装与使用(上)
- Silverlight4Beta之RichTextArea
- 华为路由器命令大全(字典查询)
热门文章
- js 作为属性的变量
- ASP.NET基本对象介绍
- spring与jpa整合 简化persistence.xml配置文件 使用属性文件 数据源dbcp访问数据库...
- asterisk queue 队列
- 活动目录的介绍:深入浅出Active Directory系列(一)
- 关于 Profile
- 【VS2010学习笔记】【编程实例】 (在Visual Studio中使用C++创建和使用DLL)
- 【第三方软件】利用WIN8系统自带的绘图软件获取图像信息(位置和颜色信息)
- MATLAB生成数组
- ArcGIS 定义坐标系