Python socket聊天脚本代码实例


Posted in Python onJanuary 02, 2020

这篇文章主要介绍了Python socket聊天脚本代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

没有前端,多开了一条线程用于接收信息。

服务器端:

# -*- coding:utf-8 -*-
import socket
import threading
 
class Sock_Server:
  def __init__(self):
    self.host = '192.168.1.11' # 获取主机名
    self.port = 12345 # 端口
    self.ser = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 设置模式
    self.ser.bind((self.host, self.port))
    self.ser.listen(5)
    print('等待客户端连接:')
    self.sock, self.addr = self.ser.accept()    # 被动接口客户端连接。
    print(f'客户:{self.addr},已经连接')
 
  def recv(self):      # 接收信息模块
    try:
      while True:
        recv_info = self.sock.recv(1024)
        if recv_info:
          print('\n收到消息:', recv_info.decode())
          if recv_info == '886':
            self.sock.close()
            self.ser.close()
            print('聊天结束!over')
            break
    finally:
      self.sock.close()
      self.ser.close()
 
  def send(self):
    try:
      while True:
        send_info = input('请输入你要发送的内容:')
        self.sock.send(send_info.encode())
        if send_info == '886':
          self.sock.close()
          self.ser.close()
          print('聊天结束!over')
          break
    finally:
      self.sock.close()
      self.ser.close()
 
if __name__ == '__main__':
  sock = Sock_Server()
  t1 = threading.Thread(target=sock.recv)
  t1.start()
  sock.send()

客户端:

# -*- coding:utf8 -*-
import socket
import threading
 
class Sock_Cli:
  def __init__(self):
    self.host = socket.gethostname() # 获取主机名
    self.port = 12345 # 端口
    self.ser = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 设置模式
    self.ser.connect((self.host, self.port))
 
  def recv(self):      # 接收信息模块
    try:
      while True:
        recv_info = self.ser.recv(1024)
        if recv_info:
          print('\n收到消息:', recv_info.decode())
          if recv_info == '886':
            self.ser.close()
            print('聊天结束!over')
            break
    finally:
      self.ser.close()
 
  def send_info(self):
    try:
      while True:
        send_info = input('请输入你要发送的内容:')
        self.ser.sendall(send_info.encode())
        if send_info == '886':
          self.ser.close()
          print('聊天结束!over')
          break
    finally:
      self.ser.close()
if __name__ == '__main__':
  cli = Sock_Cli()
  t1 = threading.Thread(target=cli.recv)
  t1.start()
  cli.send_info()

socket是进程间进行通讯很好的方式。

整个代码在886输入退出还存在一些问题,不改了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Django框架中数据的连锁查询和限制返回数据的方法
Jul 17 Python
python3.5仿微软计算器程序
Mar 30 Python
python利用lxml读写xml格式的文件
Aug 10 Python
Python利用multiprocessing实现最简单的分布式作业调度系统实例
Nov 14 Python
python导出chrome书签到markdown文件的实例代码
Dec 27 Python
Python内置模块hashlib、hmac与uuid用法分析
Feb 12 Python
基于Python实现的微信好友数据分析
Feb 26 Python
Python : turtle色彩控制实例详解
Jan 19 Python
python中rc1什么意思
Jun 19 Python
python 简单的调用有道翻译
Nov 25 Python
python和opencv构建运动检测器的实现
Mar 03 Python
Python 中的单分派泛函数你真的了解吗
Jun 22 Python
解决Pytorch训练过程中loss不下降的问题
Jan 02 #Python
Pytorch evaluation每次运行结果不同的解决
Jan 02 #Python
Python for循环与getitem的关系详解
Jan 02 #Python
python实现双色球随机选号
Jan 01 #Python
PyTorch实现更新部分网络,其他不更新
Dec 31 #Python
pytorch中的transforms模块实例详解
Dec 31 #Python
Pytorch 实现权重初始化
Dec 31 #Python
You might like
2020年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
PHP时间戳与日期之间转换的实例介绍
2013/04/19 PHP
PHP面向对象程序设计__tostring()和__invoke()用法分析
2019/06/12 PHP
js查找父节点的简单方法
2008/06/28 Javascript
capacityFixed 基于jquery的类似于新浪微博新消息提示的定位框
2011/05/24 Javascript
js使用递归解析xml
2014/12/12 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
使用jspdf生成pdf报表
2015/07/03 Javascript
js, jQuery实现全选、反选功能
2017/03/08 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
vue中使用codemirror的实例详解
2018/11/01 Javascript
Django+Vue实现WebSocket连接的示例代码
2019/05/28 Javascript
vue+ElementUI 关闭对话框清空验证,清除form表单的操作
2020/08/06 Javascript
python实现bitmap数据结构详解
2014/02/17 Python
Python使用tablib生成excel文件的简单实现方法
2016/03/16 Python
python制作图片缩略图
2019/04/30 Python
tensorflow指定CPU与GPU运算的方法实现
2020/04/21 Python
Python基于数列实现购物车程序过程详解
2020/06/09 Python
Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
2020/07/06 Python
俄罗斯品牌服装在线商店:VIPAVENUE
2020/08/10 全球购物
西班牙品牌鞋子、服装和配饰在线商店:Esdemarca
2021/02/17 全球购物
使用Vue.js和MJML创建响应式电子邮件
2021/03/23 Vue.js
高考自主招生自荐信
2013/10/20 职场文书
优秀大学生推荐信范文
2013/11/28 职场文书
求职简历中个人的自我评价
2013/12/01 职场文书
酒后驾驶检讨书
2014/01/27 职场文书
市场部管理制度
2014/02/02 职场文书
大学生撤销处分思想汇报
2014/09/12 职场文书
店铺转让协议书(2014版)
2014/09/23 职场文书
北京离婚协议书范文2014
2014/09/29 职场文书
2014年副班长工作总结
2014/12/10 职场文书
同事打架检讨书
2015/05/06 职场文书
旅游项目合作意向书
2015/05/08 职场文书
法律意见书范文
2015/05/20 职场文书
了解Redis常见应用场景
2021/06/23 Redis