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开发的小球完全弹性碰撞游戏代码
Oct 15 Python
Python之str操作方法(详解)
Jun 19 Python
Python3实现的Mysql数据库操作封装类
Jun 06 Python
Python如何将模块打包并发布
Aug 30 Python
python3 os进行嵌套操作的实例讲解
Nov 19 Python
python爬虫筛选工作实例讲解
Nov 23 Python
Python 微信公众号文章爬取的示例代码
Nov 30 Python
Appium+Python实现简单的自动化登录测试的实现
Jan 26 Python
python爬不同图片分别保存在不同文件夹中的实现
Apr 02 Python
Python中tkinter的用户登录管理的实现
Apr 22 Python
python神经网络编程之手写数字识别
May 08 Python
pytorch model.cuda()花费时间很长的解决
Jun 01 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垃圾回收机制简单说明
2010/07/22 PHP
is_uploaded_file函数引发的不能上传文件问题
2013/10/29 PHP
根据ip调用新浪api获取城市名并转成拼音
2014/03/07 PHP
在PHP中使用X-SendFile头让文件下载更快
2014/06/01 PHP
Yii框架扩展CGridView增加导出CSV功能的方法
2017/05/24 PHP
js的表单操作 简单计算器
2011/12/29 Javascript
JS如何将UTC格式时间转本地格式
2013/09/04 Javascript
jQuery中queue()方法用法实例
2014/12/29 Javascript
js实现支持手机滑动切换的轮播图片效果实例
2015/04/29 Javascript
JavaScript实现广告的关闭与显示效果实例
2015/07/02 Javascript
nodejs加密Crypto的实例代码
2016/07/07 NodeJs
JS 设置Cookie 有效期 检测cookie
2017/06/15 Javascript
浅谈Vue 初始化性能优化
2017/08/31 Javascript
原生JS上传大文件显示进度条 php上传文件代码
2020/03/27 Javascript
微信小程序自定义tab实现多层tab嵌套功能
2018/06/15 Javascript
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
移动端JS实现拖拽两种方法解析
2020/10/12 Javascript
python单元测试unittest实例详解
2015/05/11 Python
Python新手们容易犯的几个错误总结
2017/04/01 Python
使用Python爬取最好大学网大学排名
2018/02/24 Python
python高级特性和高阶函数及使用详解
2018/10/17 Python
python GUI图形化编程wxpython的使用
2019/07/19 Python
Python3批量移动指定文件到指定文件夹方法示例
2019/09/02 Python
详解Python time库的使用
2019/10/10 Python
python 连续不等式语法糖实例
2020/04/15 Python
python利用opencv保存、播放视频
2020/11/02 Python
美国购买体育赛事门票网站:TicketCity
2019/03/06 全球购物
写一个函数,求一个字符串的长度。在main函数中输入字符串,并输出其长度
2015/11/18 面试题
出纳岗位职责范本
2013/12/01 职场文书
出纳年终工作总结2014
2014/12/05 职场文书
工资证明范本
2015/06/12 职场文书
销售口号霸气押韵
2015/12/24 职场文书
有关花店创业的计划书模板
2019/08/27 职场文书
导游词之苏州盘门景区
2019/11/12 职场文书
webpack的移动端适配方案小结
2021/07/25 Javascript
Redis 中使用 list,streams,pub/sub 几种方式实现消息队列的问题
2022/03/16 Redis