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查找相似单词的方法
Mar 05 Python
利用Python获取操作系统信息实例
Sep 02 Python
python爬虫入门教程--优雅的HTTP库requests(二)
May 25 Python
浅谈Python由__dict__和dir()引发的一些思考
Oct 30 Python
简单实现python聊天程序
Apr 01 Python
Python 3.6 -win64环境安装PIL模块的教程
Jun 20 Python
python验证码图片处理(二值化)
Nov 01 Python
Python生成器实现简单"生产者消费者"模型代码实例
Mar 27 Python
Django import export实现数据库导入导出方式
Apr 03 Python
基于Pyinstaller打包Python程序并压缩文件大小
May 28 Python
上手简单,功能强大的Python爬虫框架——feapder
Apr 27 Python
Python实现查询剪贴板自动匹配信息的思路详解
Jul 09 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中3种生成XML文件方法的速度效率比较
2012/10/06 PHP
如何批量清理系统临时文件(语言:C#、 C/C++、 php 、python 、java )
2016/02/01 PHP
浅谈php中urlencode与rawurlencode的区别
2016/09/05 PHP
PHP+mysql实现从数据库获取下拉树功能示例
2017/01/06 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
2020/10/28 PHP
JS遮罩层效果 兼容ie firefox jQuery遮罩层
2010/07/26 Javascript
如何书写高质量jQuery代码(使用jquery性能问题)
2014/06/30 Javascript
JS+CSS实现的拖动分页效果实例
2015/05/11 Javascript
基于bootstrap3和jquery的分页插件
2015/07/31 Javascript
JavaScript中的ParseInt("08")和“09”返回0的原因分析及解决办法
2016/05/19 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
jQuery与js实现颜色渐变的方法
2016/12/30 Javascript
H5基于iScroll实现下拉刷新和上拉加载更多
2017/07/18 Javascript
Webpack实战加载SVG的方法
2017/12/26 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
2019/09/09 Javascript
Vue自定义组件的四种方式示例详解
2020/02/28 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
Python中运行并行任务技巧
2015/02/26 Python
python实现从网络下载文件并获得文件大小及类型的方法
2015/04/28 Python
详解Python多线程
2016/11/14 Python
python使用两种发邮件的方式smtp和outlook示例
2017/06/02 Python
Python字符串拼接的几种方法整理
2017/08/02 Python
Python读取txt某几列绘图的方法
2018/10/14 Python
Linux下Pycharm、Anaconda环境配置及使用踩坑
2018/12/19 Python
python使用for循环计算0-100的整数的和方法
2019/02/01 Python
numpy.linalg.eig() 计算矩阵特征向量方式
2019/11/29 Python
python读取当前目录下的CSV文件数据
2020/03/11 Python
如何设置PyCharm中的Python代码模版(推荐)
2020/11/20 Python
Expedia韩国官网:亚洲发展最快的在线旅游门户网站
2018/02/26 全球购物
校园达人秀策划书
2014/01/12 职场文书
招聘单位介绍信
2014/01/14 职场文书
元旦促销方案
2014/03/15 职场文书
汽车维修求职信
2014/06/15 职场文书
2014年化妆品销售工作总结
2014/12/01 职场文书
介绍信范文
2015/01/31 职场文书
工作感言一句话
2015/08/01 职场文书