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 学习笔记
Dec 27 Python
Python科学计算环境推荐——Anaconda
Jun 30 Python
一个小示例告诉你Python语言的优雅之处
Jul 04 Python
python将文本转换成图片输出的方法
Apr 28 Python
使用Python批量修改文件名的代码实例
Jan 24 Python
使用python将mysql数据库的数据转换为json数据的方法
Jul 01 Python
对pytorch的函数中的group参数的作用介绍
Feb 18 Python
Python 线性回归分析以及评价指标详解
Apr 02 Python
使用python实现微信小程序自动签到功能
Apr 27 Python
Expected conditions模块使用方法汇总代码解析
Aug 13 Python
django数据模型中null和blank的区别说明
Sep 02 Python
python压包的概念及实例详解
Feb 17 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中使用Oracle数据库(6)
2006/10/09 PHP
php expects parameter 1 to be resource, array given 错误
2011/03/23 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
PHP最常用的正则表达式
2017/02/13 PHP
php ActiveMQ的安装与使用方法图文教程
2020/02/23 PHP
jQuery 联动日历实现代码
2012/05/31 Javascript
如何用jquery控制表格奇偶行及活动行颜色
2014/04/20 Javascript
Javascript保存网页为图片借助于html2canvas库实现
2014/09/05 Javascript
JavaScript使用位运算符判断奇数和偶数的方法
2015/06/01 Javascript
javascript封装的sqlite操作类实例
2015/07/17 Javascript
详解JavaScript基于面向对象之创建对象(2)
2015/12/10 Javascript
Bootstrap每天必学之弹出框(Popover)插件
2016/04/25 Javascript
DropDownList实现可输入可选择(两种版本可选)
2016/12/07 Javascript
走进AngularJs之过滤器(filter)详解
2017/02/17 Javascript
详解Vue方法与事件
2017/03/09 Javascript
老生常谈jacascript DOM节点获取
2017/04/17 Javascript
javascript 开发之百度地图使用到的js函数整理
2017/05/19 Javascript
layui表格checkbox选择全选样式及功能的实例
2018/03/07 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
webpack HappyPack实战详解
2019/10/08 Javascript
[04:44]显微镜下的DOTA2第二期——你所没有注意到的细节
2014/06/20 DOTA
使用python将mdb数据库文件导入postgresql数据库示例
2014/02/17 Python
opencv 形态学变换(开运算,闭运算,梯度运算)
2020/07/07 Python
CSS3实现歌词进度文字颜色填充变化动态效果的思路详解
2020/06/02 HTML / CSS
HTML5里autofocus自动聚焦属性使用介绍
2016/06/22 HTML / CSS
定制iPhone和Macbook保护壳:Slick Case
2018/11/21 全球购物
NYX Professional Makeup俄罗斯官网:世界知名的化妆品品牌
2019/12/26 全球购物
Everlast官网:拳击、综合格斗和健身相关的体育用品
2020/08/03 全球购物
面试后感谢信怎么写
2014/02/01 职场文书
司法助理专业自荐书
2014/06/13 职场文书
中秋晚会活动方案
2014/08/31 职场文书
2015年健康教育工作总结
2015/04/10 职场文书
刑事上诉状范文
2015/05/22 职场文书
小区物业管理2015年度工作总结
2015/10/22 职场文书
《刷子李》教学反思
2016/02/20 职场文书
Python如何导出导入所有依赖包详解
2021/06/08 Python