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 相关文章推荐
phpsir 开发 一个检测百度关键字网站排名的python 程序
Sep 17 Python
Python中方法链的使用方法
Feb 23 Python
Python简单实现自动删除目录下空文件夹的方法
Aug 29 Python
opencv改变imshow窗口大小,窗口位置的方法
Apr 02 Python
对pandas写入读取h5文件的方法详解
Dec 28 Python
Python使用pydub库对mp3与wav格式进行互转的方法
Jan 10 Python
Python3.5 Pandas模块之Series用法实例分析
Apr 23 Python
Python3中urlencode和urldecode的用法详解
Jul 23 Python
Python学习笔记之列表推导式实例分析
Aug 13 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
May 22 Python
Python 找出英文单词列表(list)中最长单词链
Dec 14 Python
Django分页器的用法你都了解吗
May 26 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
ubuntu12.04使用c编写php扩展模块教程分享
2013/12/25 PHP
php验证码的制作思路和实现方法
2015/11/12 PHP
详解php中生成标准uuid(guid)的方法
2019/04/28 PHP
php7 错误处理机制修改实例分析
2020/05/25 PHP
jQuery 判断页面元素是否存在的代码
2009/08/14 Javascript
JS冒泡事件的快速解决方法
2013/12/16 Javascript
使用js画图之画切线
2015/01/12 Javascript
自定义百度分享的分享按钮
2015/03/18 Javascript
全面解析Bootstrap布局组件应用
2016/02/22 Javascript
分享12个实用的jQuery代码片段
2016/03/09 Javascript
浅谈angular2的http请求返回结果的subcribe注意事项
2017/03/01 Javascript
解决Node.js使用MySQL出现connect ECONNREFUSED 127.0.0.1:3306的问题
2017/03/09 Javascript
Vue服务端渲染和Vue浏览器端渲染的性能对比(实例PK )
2017/03/31 Javascript
[05:15]DOTA2英雄梦之声_第16期_灰烬之灵
2014/06/21 DOTA
实例讲解Python中的私有属性
2014/08/21 Python
python中执行shell的两种方法总结
2017/01/10 Python
Python 字典与字符串的互转实例
2017/01/13 Python
解决python3中解压zip文件是文件名乱码的问题
2018/03/22 Python
python随机取list中的元素方法
2018/04/08 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
Python3转换html到pdf的不同解决方案
2019/03/11 Python
Python寻找路径和查找文件路径的示例
2019/07/10 Python
Python随机函数库random的使用方法详解
2019/08/21 Python
Python 数据的累加与统计的示例代码
2020/08/03 Python
欧缇丽英国官方网站:Caudalie英国
2016/08/17 全球购物
世界上最悠久的自行车制造商:Ribble Cycles
2017/03/18 全球购物
世界上最伟大的马产品:Equiderma
2020/01/07 全球购物
美国亚马逊旗下时尚女装网店:SHOPBOP(支持中文)
2020/10/17 全球购物
学徒工职责
2014/03/06 职场文书
“四风”问题整改措施和努力方向
2014/09/20 职场文书
先进班集体事迹材料
2014/12/25 职场文书
大连星海广场导游词
2015/02/10 职场文书
2015初中生物教研组工作总结
2015/07/21 职场文书
导游词之西安骊山
2019/12/03 职场文书
Goland使用Go Modules创建/管理项目的操作
2021/05/06 Golang
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server