用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:n')

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:n')

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实现点对点聊天程序相关推荐

  1. C#毕业设计——基于C#+vs.net+SQL Server的多功能聊天软件设计与实现(毕业论文+程序源码)——多功能聊天软件

    基于C#+vs.net+SQL Server的多功能聊天软件设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于C#+vs.net+SQL Server的多功能聊天软件设计与实现,文章末尾附有 ...

  2. 苹果电脑python编程软件下载_python Mac版下载-python官方下载[编程开发]-华军软件园...

    python官方版是一款面向对象的解释型计算机程序设计语言,python Mac版既可以兼容之前的版本,又带来了许多功能性更新,比如支持async/await异步编程,改进了对Python Zip应用 ...

  3. python递归算法案例教案_Python电子教案2-1-Python程序实例解析.ppt

    Python电子教案2-1-Python程序实例解析.ppt 简单说,eval()的作用是将输入的字符串内容变成Python语句,并执行这个语句.实例代码1.1使用eval()函数将用户的部分输入(T ...

  4. python 全部缩进一行_Python成为专业人士笔记–程序行空白及tab缩进的作用

    "专业人士笔记"系列目录: 创帆云:Python成为专业人士笔记--强烈建议收藏!每日持续更新!​zhuanlan.zhihu.com python中的空白tab缩进 Python ...

  5. python实现简易聊天需要登录_python编写简易聊天室实现局域网内聊天功能

    本文实例为大家分享了python实现局域网内聊天功能的具体代码,供大家参考,具体内容如下 功能: 可以向局域网内开启接收信息功能的ip进行发送信息,我们可以写两段端口不同的代码来实现在一台电脑上与自己 ...

  6. python实现语音通话_python 实现语音聊天机器人的示例代码

    前言 在不远的将来,实现一定程度上的语音支持将成为日常科技的基本要求,整合了语音识别的python程序提供了其他技术无法比拟的交互性和可访问性.最重要的是,在python程序中实现语音识别非常简单.整 ...

  7. python聊天室源代码_Python实现文字聊天室

    你是否想过用所学的Python开发一个图形界面的聊天室程序啊? 像这样的: 如果你想开发这样一个有点怀旧风格的聊天程序,那么可以接着看: 要开发这个聊天程序,你需要具备以下知识点: asyncore ...

  8. android点对点聊天软件,android + springboot实现点对点实时聊天

    前言 这周一就须要交android大实验做业,android大实验作了一个二手商城,可是功能太少了,android老师要求大实验要有一些特点.就想着实现一下实时聊天.而后就利用周日时间试了一下.and ...

  9. android聊天软件大报告,大改变聊天app下载-大改变聊天神器预约 安卓版v1.0-PC6安卓网...

    大改变聊天神器APP是一款专业的恋爱话术软件,大改变聊天app不仅可以教你如何撩妹,大改变聊天app还能教你如何追男神.女神,各种场景下适用的话术应有尽有,让你快速成为高情商人士. 软件介绍 大改变聊 ...

最新文章

  1. 打开浏览器提示下载解决方法
  2. 《系统集成项目管理工程师》必背100个知识点-02项目组织方式和特点
  3. 如何提升软件交付效能?答案未必如你所想
  4. 收藏 | 神经网络debug 6大技巧!
  5. 测测你的显示器灰阶显示
  6. c# c均值聚类及DBSCAN聚类
  7. Questions make me doubt my engineer career
  8. c语言指令 符号表,C语言指令、符号表
  9. 关于Cocos2d-x中自定义的调用注意事项
  10. 媒体查询Media Query
  11. 肤色检测一例-使用rgb颜色模型
  12. 教你在SQL Server数据库中设计表和字段
  13. 转载:c# serialport类 串口通信 hello world
  14. 航空公司客户价值分析R语言实现
  15. 华为mate50会用鸿蒙系统吗,华为Mate50Pro概念机:瀑布环绕屏+鸿蒙系统,就算涨价我也劝你买...
  16. TYPORA主题更换
  17. oracle监听启动无权限,ubuntu 下启动oracle监听失败:TNS-12555: TNS:permission denied
  18. ps 利用马赛克滤镜制作方格背景
  19. 32位服务器系统安装教程,服务器系统数据库安装教程
  20. 史上讲解最好的 Docker 教程,从入门到精通(建议收藏的教程)

热门文章

  1. 面试官:this和super有什么区别?this能调用到父类吗?
  2. 用好MySQL的21个好习惯!
  3. 看故事学知识,这篇Java代理的文章妙啊!
  4. Chrome浏览器必装的扩展工具
  5. php 文件 后缀,php如何修改文件后缀名
  6. EF中DB First模式下数据库中表结构变化时如何快速同步到EF模型中
  7. C# partial 部分类使用简单举例说明
  8. html5的交互标签,html5里交互元素的使用方法
  9. 的计时器设置_如何选择最适合自己的计时器?
  10. mysql count count id_mysql 为什么count(*)快于count(id)