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爬虫入门教程--利用requests构建知乎API(三)
May 25 Python
python实现俄罗斯方块游戏
Mar 25 Python
django连接mysql配置方法总结(推荐)
Aug 18 Python
Python使用dict.fromkeys()快速生成一个字典示例
Apr 24 Python
Python中常用的8种字符串操作方法
May 06 Python
python join方法使用详解
Jul 30 Python
python实现多线程端口扫描
Aug 31 Python
Python多线程thread及模块使用实例
Apr 28 Python
学习python需要有编程基础吗
Jun 02 Python
python利用递归方法实现求集合的幂集
Sep 07 Python
python 无损批量压缩图片(支持保留图片信息)的示例
Sep 22 Python
Python与C++中梯度方向直方图的实现
Mar 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
ajax php 实现写入数据库
2009/09/02 PHP
php读取csv文件并输出的方法
2015/03/14 PHP
PHP7 标准库修改
2021/03/09 PHP
自定义的一个简单时尚js下拉选择框
2013/11/20 Javascript
jquery.Ajax()方法调用Asp.Net后台的方法解析
2014/02/13 Javascript
jQuery控制TR显示隐藏的几种方法
2014/06/18 Javascript
AngularJS基础知识
2014/12/21 Javascript
JavaScript实现的字符串replaceAll函数代码分享
2015/04/02 Javascript
javascript原型模式用法实例详解
2015/06/04 Javascript
在Python中使用glob模块查找文件路径的方法
2015/06/17 Javascript
jquery实现TAB选项卡鼠标经过带延迟效果的方法
2015/07/27 Javascript
深入学习JavaScript中的Rest参数和参数默认值
2015/07/28 Javascript
Nodejs express框架一个工程中同时使用ejs模版和jade模版
2015/12/28 NodeJs
BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法
2016/12/01 Javascript
数组Array的一些方法(总结)
2017/02/17 Javascript
jQuery实现的手风琴侧边菜单效果
2017/03/29 jQuery
JavaScript正则表达式和级联效果
2017/09/14 Javascript
AngularJS下$http服务Post方法传递json参数的实例
2018/03/29 Javascript
Koa2微信公众号开发之消息管理
2018/05/16 Javascript
vue中使用sessionStorage记住密码功能
2018/07/24 Javascript
浅析vue给不同环境配置不同打包命令
2018/08/17 Javascript
浅谈VueJS SSR 后端绘制内存泄漏的相关解决经验
2018/12/20 Javascript
送你43道JS面试题(收藏)
2019/06/17 Javascript
Django实现自定义404,500页面教程
2017/03/26 Python
Linux RedHat下安装Python2.7开发环境
2017/05/20 Python
Django文件存储 默认存储系统解析
2019/08/02 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
pytorch:model.train和model.eval用法及区别详解
2020/02/20 Python
Sql面试题
2013/03/20 面试题
竞选班长演讲稿
2013/12/30 职场文书
高级销售求职信
2014/02/21 职场文书
竞争与合作演讲稿
2014/05/12 职场文书
家长高考寄语
2015/02/27 职场文书
爱国电影观后感
2015/06/19 职场文书
2015军训通讯稿大全
2015/07/18 职场文书
vite+vue3.0+ts+element-plus快速搭建项目的实现
2021/06/24 Vue.js