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

yizhihongxing

下面我将为大家详细讲解如何使用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日

相关文章

  • Puppeteer使用示例详解

    Puppeteer使用示例详解 Puppeteer是一个Node.js库,它提供了一个高级API来通过DevTools协议控制Chrome或Chromium浏览器。本文将详细讲解Puppeteer的使用示例,包括如何启动浏览器、如何打开网页、如何模拟用户操作等内容。 启动浏览器 以下是一个使用Puppeteer启动浏览器的示例: const puppetee…

    python 2023年5月15日
    00
  • Python输出\u编码将其转换成中文的实例

    Python输出\u编码将其转换成中文的实例 在Python中,有时我们会遇到输出中文时出现\u编码的情况。本攻略将介绍如何将这些\u编码转换成中文。 示例1:使用encode和decode方法 我们可以使用encode方法将字符串转换成字节串,再使用decode方法将字节串转换成字符串。以下是一个示例代码,用于将含有\u编码的字符串转换成中文: s = ‘…

    python 2023年5月15日
    00
  • python使用pyodbc连接sqlserver

    下面是使用pyodbc连接SQL Server的完整攻略。 安装pyodbc库 首先需要安装pyodbc库,可以使用pip命令进行安装: pip install pyodbc 准备工作 连接SQL Server需要以下信息: 数据库的地址,格式为server_name\instance_name或者server_name。 数据库的名称。 登录用户名和密码。…

    python 2023年5月20日
    00
  • python使用tkinter模块实现文件选择功能

    下面就是使用 Python 的 tkinter 模块实现文件选择功能的完整攻略。 一、Tkinter 的介绍 Tkinter 是 Python 中最常用的 GUI 工具包,其提供了一组面向对象的 Python 绑定,可以让程序员在 Python 中使用 Tcl/Tk 的 GUI 能力。Tkinter 相对于其他 Python GUI 工具包有着广泛的口碑和期…

    python 2023年6月13日
    00
  • Python multiprocess pool模块报错pickling error问题解决方法分析

    在使用Python的multiprocessing.Pool模块时,有时候会遇到PicklingError的错误。这个错误通常是由于无法将对象序列化为字节流导致的。本攻略将介绍如何解决这个问题。 问题描述 在使用multiprocessing.Pool时,我们可能会遇到以下错误: PicklingError: Can’t pickle <type ‘f…

    python 2023年5月13日
    00
  • python 将列表里的字典元素合并为一个字典实例

    要将列表里的字典元素合并为一个字典实例,可以使用Python的内置函数merge_dicts()函数或者使用for循环遍历列表的方式来实现。 使用merge_dicts()函数进行合并 merge_dicts()函数可以将多个字典合并为一个字典实例,这个函数在Python 3.9版本中引入,需要使用时需要安装Python 3.9及以上的版本。 以下是示例1的…

    python 2023年5月13日
    00
  • python Windows最新版本安装教程

    Python Windows最新版本安装教程 Python是一种高级编程语言,广泛应用于Web开发,数据科学和人工智能等领域。在Windows上安装Python是学习和使用Python的第一步,本文将介绍如何在Windows上安装Python的最新版本。 步骤一 下载Python安装包 在官网 https://www.python.org/downloads…

    python 2023年5月30日
    00
  • python 实现二维数组的索引、删除、拼接操作

    在Python中,二维数组可以使用列表嵌套列表的方式来实现。本文将详细讲解如何使用Python实现二维数组的索引、删除、拼接操作。 二维数组的创建 在Python中,可以使用列表嵌套列表的方式来创建二维数组。例如: # 创建一个3行4列的二维数组 arr = [[0 for j in range(4)] for i in range(3)] print(ar…

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