Python3 socket即时通讯脚本实现代码实例(threading多线程)

下面我将为大家详细讲解如何使用Python3的Socket实现即时通讯脚本,并使用Threading多线程来提高通信效率和稳定性。

什么是Socket?

Socket是一种网络通信协议,其是一种计算机网络的基础设施,它简化了网络通讯的开发难度,同时也使通讯程序的安全性、稳定性得到了提升。在Python3中,我们可以通过socket的模块,使用多种协议进行网络通讯。

实现思路

在这里我们使用Python3自带的socket模块,来实现一个即时通讯的脚本,这需要我们使用线程来实现单线程多并发的效果,以提高通讯的效率和稳定性。

实现步骤

  1. 创建Socket对象:我们可以使用socket.socket()函数来创建一个Socket对象。
  2. 绑定IP和端口:我们需要将我们的Server绑定到指定的IP和端口,这里我们使用bind()函数。
  3. 监听连接:我们需要让Server进行监听,等待Client的连接,使用以下代码:s.listen(5)。
  4. 进行通信:如果有Client连接了,就需要进行通信。这里我们使用send()和recv()函数实现。
  5. 多线程处理:为了提高程序的并发性,我们需要使用Threading来实现多线程处理。

Python3 Socket即时通讯代码实现

Server端代码示例:

import socket
import threading

class Server:
    def __init__(self, host, port):
        self.server_socket = socket.socket()
        self.host = host
        self.port = port
        self.server_socket.bind((host,port))
        self.server_socket.listen(5)
        print('Server is listening on {}:{}'.format(host, port))

    def client_conn(self, conn, addr):
        print('New client connected: ', addr)
        while True:
            try:
                data = conn.recv(1024).decode()
                if not data:
                    break
                print('{}: {}'.format(addr, data))
                conn.sendall("Server Received: {}".format(data).encode())
            except:
                break
        print('Client {}:{} disconnected'.format(addr[0], addr[1]))
        conn.close()

    def run(self):
        while True:
            conn, addr = self.server_socket.accept()
            t = threading.Thread(target=self.client_conn, args=(conn, addr))
            t.start()

if __name__ == '__main__':
    server = Server('127.0.0.1', 8000)
    server.run()

Client端代码示例:

import socket

class Client:
    def __init__(self, host, port):
        self.client_socket = socket.socket()
        self.host = host
        self.port = port
        self.client_socket.connect((host,port))
        print('Connected to {}:{}'.format(host, port))

    def run(self):
        while True:
            try:
                data = input("Client> ")
                self.client_socket.sendall(data.encode())
                server_data = self.client_socket.recv(1024).decode()
                print('Server> {}'.format(server_data))
            except:
                break

if __name__ == '__main__':
    client = Client('127.0.0.1', 8000)
    client.run()

总结

Python3的Socket模块提供给了我们一种实现网络通讯的方式,结合Threading多线程,让我们可以在Python中轻松实现高并发的互联网应用程序,可以应用在聊天室、即时通讯等场景中。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python3 socket即时通讯脚本实现代码实例(threading多线程) - Python技术站

(0)
上一篇 2023年5月19日
下一篇 2023年5月19日

相关文章

  • python如何使用replace做多字符替换

    Python中的字符串类型有一个内置方法 replace,可以将字符串中指定的字符或者字符串,替换为另一个字符或者字符串。下面是使用 replace 方法进行多字符替换的步骤: 使用 replace 方法,将要替换的多个字符或者字符串组成的列表作为第一个参数传入,通过字符串方法 join 来连接多个字符或字符串。 将要替换的多个字符或者字符串组合成一个 tu…

    python 2023年6月3日
    00
  • python实现邮件自动发送

    首先我们需要导入两个库:smtplib和email。 smtplib库是Python内置的邮件传输协议的SMTP协议实现,可以实现电子邮件的发送功能。而email库则可以方便地操作邮件内容,比如设置邮件主题、发件人、收件人、邮件正文等。 import smtplib from email.mime.text import MIMEText from emai…

    python 2023年5月19日
    00
  • Python中特殊函数集锦

    Python中特殊函数集锦 在Python中,有很多特殊函数可以用来实现类似于运算符一样的功能。这些函数通常以双下划线开始和结束,例如__add__表示加法操作。这些特殊函数也被称为魔法方法(magic methods)或者dunder方法(double underscore methods)。 基本使用方法 这些特殊函数通常和类相关,可以用来定制类的行为。…

    python 2023年5月31日
    00
  • Python 做曲线拟合和求积分的方法

    Python 做曲线拟合和求积分的方法 Python是一种流行的编程语言,也是许多科学和工程领域的重要工具。其中,Python拥有大量的科学计算库和函数,使得数据分析和处理更加容易。本文将介绍在Python中如何进行曲线拟合和求积分的操作,帮助读者更好地应用Python进行数据分析。 曲线拟合 曲线拟合是一种常见的数据分析技术,可以用来确定两个连续变量之间的…

    python 2023年6月3日
    00
  • python+pywinauto+lackey实现PC端exe自动化的示例代码

    针对“python+pywinauto+lackey实现PC端exe自动化的示例代码”的完整攻略,我简单地阐述下如下几个步骤: 确定测试需求和工具 第一步,确定测试的需求和工具,这是做测试的前提和基础。在这个示例中,我们的测试工具为“pywinauto”和“lackey”,测试需求是自动化执行某个PC端的.EXE文件。 安装Python和pywinauto …

    python 2023年5月19日
    00
  • 详解Python 类变量与实例变量的陷阱

    Python中的类变量和实例变量是常见的面向对象编程的概念。类变量是定义在类中,并且被所有实例共享的变量。实例变量是定义在实例中,并且每个实例有它们自己的独立变量副本。 然而,在使用类变量和实例变量时,有一些陷阱需要注意,下面我们就来详细讲解这些问题以及如何正确使用类变量和实例变量。 类变量与实例变量的区别 类变量是所有实例共享的变量,关键字 class 定…

    python-answer 2023年3月25日
    00
  • Python ini文件常用操作方法解析

    Python ini文件常用操作方法解析 ini文件是一种常见的配置文件格式,它通常用于存储应用程序的配置信息。Python提供了ConfigParser模块,可以方便地读取和写入ini文件。本文将详细讲解Python ini文件常用操作方法,包括读取ini文件、写入ini文件、修改ini文件等。 读取ini文件 使用ConfigParser模块可以方便地读…

    python 2023年5月15日
    00
  • Python常用内置模块之xml模块(详解)

    在Python中,xml模块是一个常用的内置模块,可以用于解析和生成XML文档。以下是详细的攻略,介绍xml模块的原理和用法: 解析XML文档 可以使用xml模块解析XML文档。以下是一个示例,演示如何使用xml模块解析XML文档: import xml.etree.ElementTree as ET xml_str = ”’ <bookstore&…

    python 2023年5月14日
    00
合作推广
合作推广
分享本页
返回顶部