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加pyGame实现的简单拼图游戏实例
May 15 Python
Python采用Django开发自己的博客系统
Sep 29 Python
如何更优雅地写python代码
Jul 02 Python
详解Django 时间与时区设置问题
Jul 23 Python
python实现布隆过滤器及原理解析
Dec 08 Python
Python线程条件变量Condition原理解析
Jan 20 Python
Python 如何调试程序崩溃错误
Aug 03 Python
python中re模块知识点总结
Jan 17 Python
pandas统计重复值次数的方法实现
Feb 20 Python
Opencv 图片的OCR识别的实战示例
Mar 02 Python
python实现双向链表原理
May 25 Python
virtualenv隔离Python环境的问题解析
Jun 21 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入门教程 精简版
2009/12/13 PHP
讲解WordPress中用于获取评论模板和搜索表单的PHP函数
2015/12/28 PHP
laravel获取不到session的三种解决办法【推荐】
2018/09/16 PHP
[原创]图片分页查看
2006/08/28 Javascript
<script defer> defer 是什么意思
2009/05/10 Javascript
基于jQuery的ajax功能实现web service的json转化
2009/08/29 Javascript
怎么清空javascript数组
2013/05/11 Javascript
jquery实现图片翻页效果
2013/12/23 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
JS+CSS实现类似QQ好友及黑名单效果的树型菜单
2015/09/22 Javascript
深入分析Javascript事件代理
2016/01/30 Javascript
bootstrapValidator.min.js表单验证插件
2017/02/09 Javascript
全选复选框JavaScript编写小结(附代码)
2017/08/16 Javascript
[js高手之路]设计模式系列课程-发布者,订阅者重构购物车的实例
2017/08/29 Javascript
微信小程序的生命周期的详解
2017/10/19 Javascript
详解微信小程序框架wepy踩坑记录(与vue对比)
2019/03/12 Javascript
详解JavaScript实现动态的轮播图效果
2019/04/29 Javascript
微信小程序实现点击页面出现文字
2020/09/21 Javascript
[58:57]2018DOTA2亚洲邀请赛3月29日小组赛B组 Effect VS VGJ.T
2018/03/30 DOTA
Python中exit、return、sys.exit()等使用实例和区别
2015/05/28 Python
python基础教程之五种数据类型详解
2017/01/12 Python
Python自然语言处理 NLTK 库用法入门教程【经典】
2018/06/26 Python
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
python模糊图片过滤的方法
2018/12/14 Python
Python利用itchat库向好友或者公众号发消息的实例
2019/02/21 Python
python可视化篇之流式数据监控的实现
2019/08/07 Python
在pytorch中为Module和Tensor指定GPU的例子
2019/08/19 Python
Pandas对DataFrame单列/多列进行运算(map, apply, transform, agg)
2020/06/14 Python
欧舒丹英国官网:购买欧舒丹护手霜等明星产品
2017/01/17 全球购物
《厄运打不垮的信念》教学反思
2014/04/13 职场文书
技术合作协议书范本
2014/04/18 职场文书
芙蓉镇观后感
2015/06/10 职场文书
2016年公司中秋节致辞
2015/11/26 职场文书
小学一年级数学教学反思
2016/02/16 职场文书
2019个人工作计划书的格式及范文!
2019/07/04 职场文书
前端传参数进行Mybatis调用mysql存储过程执行返回值详解
2022/08/14 MySQL