Python socket服务常用操作代码实例

为了详细讲解 “Python Socket 服务常用操作代码实例”,我们将会分以下几个方面来进行讲解:

  1. 什么是 Socket?
  2. Python 中 Socket 操作的常用流程
  3. Python 中 Socket 常用操作的代码实例

什么是 Socket?

Socket(套接字)是指操作系统提供的用于网络通信的一种机制。通过 Socket,整个网络通信过程变得更加方便快捷。通俗来说Socket就是一种套路,让计算机之间可以通过互联网进行通信。

Socket 是应用层和传输层之间的门户,提供了 TCP/IP 协议族应用层和传输层之间的通信。Socket 本质上只是一个头文件,数据结构体,以及应用程序调用返回值等操作方式的抽象封装而已。

我们称通信的一端为一条 Socket。这条 Socket 由 IP 地址和 Port 端口号唯一确定。

Python 中 Socket 操作的常用流程

在 Python 中进行 Socket 操作是非常方便的。其常用流程如下:

  1. 创建套接字对象:
  2. socket.socket(AddressFamily, Type):创建数据流套接字。
  3. 绑定套接字到本地 IP 和端口:
  4. server.bind((address, port)):将套解字绑定到地址。address 为要绑定的IP地址,port 为端口号。
  5. 开始监听链接:
  6. server.listen(backlog):开始监听链接。backlog 为 未接受的最大连接数,一般设置为 5 即可。
  7. 接受客户端请求:
  8. clientsocket, clientaddress = server.accept():接受请求,并根据请求返回返回客户端端口号和地址。
  9. 进行通信:
  10. clientsocket.send(Msg):发送消息给客户端。
  11. clientsocket.recv(Bufsize):接收客户端发来的消息。bufsize 为一次接受消息的最大字符数。

Python 中 Socket 常用操作的代码实例

下面我们以两条示例来说明 Python 中 Socket 的常用操作代码:

示例一:HTTP Server

import socket

def start_server():
    """启动Http服务器"""
    # 创建socket对象
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 绑定IP地址和端口
    server_socket.bind(('localhost', 8000))
    # 设置监听数量
    server_socket.listen(5)

    while True:
        print('start listen')
        # 等待连接请求
        (client_socket, client_address) = server_socket.accept()
        print(f'client address is {client_address}')

        # 获取请求内容
        request_data = client_socket.recv(1024*1024)
        print(f'request data is {request_data}')

        # 构造响应数据
        response_start_line = 'HTTP/1.1 200 OK\r\n'
        response_headers = 'Server: myserver\r\n'
        response_body = 'hello world'

        response_data = (response_start_line + response_headers + '\r\n' + response_body).encode('utf-8')

        # 发送响应数据
        client_socket.send(response_data)

        # 关闭socket
        client_socket.close()

if __name__ == '__main__':
    start_server()

这个示例是一个简单的Http服务器,通过将代码放在一个循环中可以不断监听客户端的请求,收到请求后,根据Http协议的格式构造并返回响应数据。

示例二:TCP Client

import socket


def start_client():
    """启动TCP客户端"""
    # 创建socket对象
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 连接远程IP地址和端口
    client_socket.connect(('localhost', 8000))
    # 发送数据
    client_socket.send('hello, server'.encode('utf-8'))
    # 接收数据
    response_data = client_socket.recv(1024*1024)
    print(f'resopnse data is {response_data}')
    # 关闭socket
    client_socket.close()

if __name__ == '__main__':
    start_client()

这个示例是一个简单的Tcp客户端,通过创建一个socket对象,连接服务器的Ip地址和端口,发送数据并接收响应数据,最后关闭socket的方式,实现Tcp通信。

以上就是关于 “Python Socket 服务常用操作代码实例”的详细攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python socket服务常用操作代码实例 - Python技术站

(0)
上一篇 2023年6月3日
下一篇 2023年6月3日

相关文章

  • python3.7 打包成exe程序方式(只需两行命令)

    下面我会详细讲解Python 3.7打包成exe程序的完整攻略,包含两条示例说明。 1. 准备工作 在开始打包之前,需要确保你已经安装好了Python 3.7版本和pip这个包管理工具。 在此之外,还需要安装两个pip包,分别是pyinstaller和auto-py-to-exe。这两个包可以通过以下命令进行安装: pip install pyinstall…

    python 2023年6月5日
    00
  • Python中自定义函数的教程

    Python中自定义函数的教程 为什么要自定义函数? 在编写一些复杂的程序时,我们往往需要编写大量的代码。这些代码可能有可重复利用的部分,如果每次都需要重新编写一遍,将会增加我们的工作量而且也不利于代码维护。好的编程习惯是将这些可重复利用的代码组织成函数,这样不仅可以减少代码的重复,更能增强代码的可读性和可维护性。 Python中如何自定义函数 函数定义 在…

    python 2023年6月3日
    00
  • Python matplotlib绘制灰度和彩色直方图

    当我们需要了解图像中像素值的分布时,直方图是一种非常有用的工具。Python matplotlib是一个非常流行的数据可视化库,可以用来绘制图像的直方图。下面是Python matplotlib绘制灰度和彩色直方图的完整攻略。 准备工作 在使用matplotlib绘制直方图之前,需要先安装matplotlib库。如果你使用的是anaconda或者jupyte…

    python 2023年5月19日
    00
  • 利用python写api接口实战指南

    利用Python写API接口实战指南 什么是API接口 API(Application Programming Interface,应用程序编程接口)是一种软件接口,它定义了不同应用程序之间如何相互通信、交互。API接口分为很多种,常见的有Web API,数据库API,操作系统API等。 Web API是目前最流行的API接口,它作为一种开放式API接口,能…

    python 2023年5月19日
    00
  • 强烈推荐好用的python库合集(全面总结)

    强烈推荐好用的Python库合集(全面总结) 介绍 Python是一门应用广泛的编程语言,在日常开发中,借助各种各样的Python库,可以帮助我们更快速、更高效地完成各种任务。本文总结了一些我在开发中常用的Python库,并结合示例介绍它们的使用方法。 Pandas Pandas 是一个强大的数据分析工具,在读取、处理、分析和展示数据方面提供了很多便利。它可…

    python 2023年5月20日
    00
  • Python将string转换到float的实例方法

    下面是详细讲解“Python将string转换到float的实例方法”的完整攻略。 什么是Python中的字符串和浮点数? 在Python中,字符串指的是用单引号或双引号括起来的字符序列,例如: a_string = ‘hello world’ 而浮点数则是用来表示有小数部分的实数,例如: a_float = 3.14 字符串如何转换成浮点数? 要将一个字符…

    python 2023年6月5日
    00
  • 对python:threading.Thread类的使用方法详解

    对 python:threading.Thread 类的使用方法详解 在 Python 中,通过使用 threading 模块来实现多线程编程,而 threading.Thread 类则是其中最重要的一个类,它允许我们创建一个线程对象。 创建线程对象 threading.Thread 类的构造函数如下: class threading.Thread(grou…

    python 2023年5月19日
    00
  • Python利用雪花算法实现生成唯一ID

    Python利用雪花算法实现生成唯一ID 雪花算法简介 雪花算法也叫雪花ID,是以Twitter的Snowflake算法为基础而开发出来的。雪花算法可以生成唯一ID,且有一定的顺序性,适用于分布式系统中的ID生成。 实现原理 雪花ID是64位的,其中第 1 个bit是符号位,始终为0;后41位为时间戳,单位是毫秒级,可以用约69年;接着的10位是机器 ID,…

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