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 相关文章推荐
利用python获取当前日期前后N天或N月日期的方法示例
Jul 30 Python
python编程羊车门问题代码示例
Oct 25 Python
Python3 加密(hashlib和hmac)模块的实现
Nov 23 Python
Python学习之Django的管理界面代码示例
Feb 10 Python
python读取文本中数据并转化为DataFrame的实例
Apr 10 Python
Python进阶之全面解读高级特性之切片
Feb 19 Python
Python获取、格式化当前时间日期的方法
Feb 10 Python
python字符串下标与切片及使用方法
Feb 13 Python
python deque模块简单使用代码实例
Mar 12 Python
python实现梯度法 python最速下降法
Mar 24 Python
2020版Python学习路线图(附学习资料)
Sep 15 Python
OpenCV项目实践之停车场车位实时检测
Apr 11 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
PHP网页游戏学习之Xnova(ogame)源码解读(十四)
2014/06/26 PHP
PHP页面实现定时跳转的方法
2014/10/31 PHP
php获取当前页面完整URL地址
2015/12/30 PHP
PHP给前端返回一个JSON对象的实例讲解
2018/05/31 PHP
Javascript 错误处理的几种方法
2009/06/13 Javascript
ext 同步和异步示例代码
2009/09/18 Javascript
JS实现简单的Canvas画图实例
2013/07/04 Javascript
Google官方支持的NodeJS访问API,提供后台登录授权
2014/07/29 NodeJs
jQuery+CSS3实现四种应用广泛的导航条制作实例详解
2016/09/17 Javascript
ES6中Generator与异步操作实例分析
2017/03/31 Javascript
给vue项目添加ESLint的详细步骤
2017/09/29 Javascript
Windows安装Node.js报错:2503、2502的解决方法
2017/10/25 Javascript
动手写一个angular版本的Message组件的方法
2017/12/16 Javascript
javascript原生封装一个淡入淡出效果的函数测试实例代码
2018/03/19 Javascript
原生JS实现DOM加载完成马上执行JS代码的方法
2018/09/07 Javascript
微信小程序中使用Async-await方法异步请求变为同步请求方法
2019/03/28 Javascript
Vue组件间通信方法总结(父子组件、兄弟组件及祖先后代组件间)
2019/04/17 Javascript
koa2+vue实现登陆及登录状态判断
2019/08/15 Javascript
JS中自定义事件的使用与触发操作实例分析
2019/11/01 Javascript
微信小程序缓存支持二次开发封装实现解析
2019/12/16 Javascript
国内常用的js类库大全(CDN公共库)
2020/06/24 Javascript
Python中MySQL数据迁移到MongoDB脚本的方法
2016/04/28 Python
Django ORM框架的定时任务如何使用详解
2017/10/19 Python
Python小进度条显示代码
2019/03/05 Python
Python Image模块基本图像处理操作小结
2019/04/13 Python
pandas对dataFrame中某一个列的数据进行处理的方法
2019/07/08 Python
浅谈pytorch torch.backends.cudnn设置作用
2020/02/20 Python
python GUI库图形界面开发之PyQt5多行文本框控件QTextEdit详细使用方法实例
2020/02/28 Python
python实现控制台输出彩色字体
2020/04/05 Python
python装饰器代码深入讲解
2021/03/01 Python
原材料检验岗位职责
2014/03/15 职场文书
公司员工培训管理制度
2015/08/04 职场文书
社会实践心得体会范文
2016/01/14 职场文书
2019年二手房买卖合同范本
2019/10/14 职场文书
详解Go与PHP的语法对比
2021/05/29 PHP
python中的getter与setter你了解吗
2022/03/24 Python