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调用C语言开发的共享库方法实例
Mar 18 Python
Python的设计模式编程入门指南
Apr 02 Python
Python多线程编程(六):可重入锁RLock
Apr 05 Python
Python实现从URL地址提取文件名的方法
May 15 Python
Python使用自带的ConfigParser模块读写ini配置文件
Jun 26 Python
详解Python中的array数组模块相关使用
Jul 05 Python
详解将Python程序(.py)转换为Windows可执行文件(.exe)
Jul 19 Python
Flask框架路由和视图用法实例分析
Nov 07 Python
python如何实时获取tcpdump输出
Sep 16 Python
Python-openpyxl表格读取写入的案例详解
Nov 02 Python
详解修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
Jan 24 Python
python实现商品进销存管理系统
May 30 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遍历文件夹下的所有文件和子文件夹示例
2014/03/20 PHP
为PHP5.4开启Zend OPCode缓存
2014/12/26 PHP
使用Huagepage和PGO来提升PHP7的执行性能
2015/11/30 PHP
给大家分享几个常用的PHP函数
2017/01/15 PHP
php 从指定数字中获取随机组合的简单方法(推荐)
2017/04/05 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
动手学习无线电
2021/03/10 无线电
JS实现一键回顶功能示例代码
2013/10/28 Javascript
js出生日期 年月日级联菜单示例代码
2014/01/10 Javascript
js导航栏单击事件背景变换示例代码
2014/01/13 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
jQuery的css()方法用法实例
2014/12/24 Javascript
基于jquery实现ajax无刷新评论
2020/08/19 Javascript
Jquery基础之事件操作详解
2016/06/14 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
详解使用路由延迟加载 Angular 模块
2017/10/12 Javascript
利用vue + element实现表格分页和前端搜索的方法
2017/12/25 Javascript
浅谈使用mpvue开发小程序需要注意和了解的知识点
2018/05/23 Javascript
小程序实现左滑删除效果
2019/07/25 Javascript
[03:16]DOTA2完美大师赛小组赛精彩集锦
2017/11/22 DOTA
对于Python异常处理慎用“except:pass”建议
2015/04/02 Python
Python RabbitMQ消息队列实现rpc
2018/05/30 Python
transform python环境快速配置方法
2018/09/27 Python
对python中GUI,Label和Button的实例详解
2019/06/27 Python
Python学习笔记之文件的读写操作实例分析
2019/08/07 Python
django ListView的使用 ListView中获取url中的参数值方式
2020/03/27 Python
Python实现仿射密码的思路详解
2020/04/23 Python
Python通过fnmatch模块实现文件名匹配
2020/09/30 Python
HTML5在IE10、火狐下中文乱码问题的解决方法
2013/11/18 HTML / CSS
如何手工释放资源
2013/12/15 面试题
linux面试题参考答案(10)
2013/11/04 面试题
销售类个人求职信范文
2013/09/25 职场文书
演讲稿怎么写才完美
2014/01/02 职场文书
买卖合同协议书范本
2014/10/18 职场文书
2014年电教工作总结
2014/12/19 职场文书
领导欢迎词范文
2015/01/26 职场文书