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执行子进程实现进程间通信的方法
Jun 02 Python
python中nan与inf转为特定数字方法示例
May 11 Python
python anaconda 安装 环境变量 升级 以及特殊库安装的方法
Jun 21 Python
python链接oracle数据库以及数据库的增删改查实例
Jan 30 Python
Python面向对象思想与应用入门教程【类与对象】
Apr 12 Python
python 判断linux进程,并杀死进程的实现方法
Jul 01 Python
Python 实现使用空值进行赋值 None
Mar 12 Python
Python如何输出整数
Jun 07 Python
Python+Kepler.gl实现时间轮播地图过程解析
Jul 20 Python
Python使用pycharm导入pymysql教程
Sep 16 Python
python 进程池pool使用详解
Oct 15 Python
Python的Tqdm模块实现进度条配置
Feb 24 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 setcookie设置Cookie用法(及设置无效的问题)
2011/07/13 PHP
PHP父类调用子类方法的代码例子
2014/04/09 PHP
PHP数组遍历知识汇总(包含遍历方法、数组指针操作函数、数组遍历测速)
2014/07/05 PHP
PHP魔术方法以及关于独立实例与相连实例的全面讲解
2016/10/18 PHP
PHP中“=>
2019/03/01 PHP
PHP单元测试配置与使用方法详解
2019/12/27 PHP
调用js时ie6和ie7,ff的区别
2009/08/19 Javascript
添加JavaScript重载函数的辅助方法2
2010/07/04 Javascript
eclipse如何忽略js文件报错(附图)
2013/10/30 Javascript
jQuery中html()方法用法实例
2014/12/25 Javascript
深入浅析search 搜索框的写法
2016/08/02 Javascript
基于nodejs+express4.X实现文件下载的实例代码
2017/07/13 NodeJs
jQuery EasyUI Layout实现tabs标签的实例
2017/09/26 jQuery
vue数据控制视图源码解析
2018/03/28 Javascript
记录vue项目中遇到的一点小问题
2019/05/14 Javascript
p5.js实现故宫橘猫赏秋图动画
2019/10/23 Javascript
[55:25]2018DOTA2亚洲邀请赛3月29日 小组赛A组 VG VS OG
2018/03/30 DOTA
[47:04]LGD vs infamous Supermajor小组赛D组 BO3 第二场 6.3
2018/06/04 DOTA
python数据类型_字符串常用操作(详解)
2017/05/30 Python
Python实现随机生成手机号及正则验证手机号的方法
2018/04/25 Python
Python Requests模拟登录实现图书馆座位自动预约
2018/04/27 Python
对Python中数组的几种使用方法总结
2018/06/28 Python
详解Django 时间与时区设置问题
2019/07/23 Python
Tensorflow实现在训练好的模型上进行测试
2020/01/20 Python
tensorflow求导和梯度计算实例
2020/01/23 Python
tensorflow 实现自定义layer并添加到计算图中
2020/02/04 Python
CSS3实现渐变背景兼容问题
2020/05/06 HTML / CSS
html5 Canvas画图教程(6)—canvas里画曲线之arcTo方法
2013/01/09 HTML / CSS
aden + anais官方网站:婴儿襁褓、毯子、尿布和服装
2017/06/21 全球购物
3个CCIE对一个工程师的面试题
2012/05/06 面试题
关于母亲节的感言
2014/02/04 职场文书
教师考核评语
2014/04/28 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
《地。-关于地球的运动-》单行本第七集上市,小说家朝井辽献上期待又害怕的推荐文
2022/03/31 日漫
Linux安装Docker详细教程
2022/07/07 Servers
react中useState使用:如何实现在当前表格直接更改数据
2022/08/05 Javascript