1.3.网络编程

这里对网络编程,做一个简单的讲述。

        和其他开发语言一样,python也不例外。python的网络编程,就是在python的程序本身的进程内,连接到指定的服务器进程的通信端口进行通信,所以网络通信,可以看作是两个进程间他通信。

        在 Python 中进行网络编程可以使用多种模块和库,常用的有 socket 模块、socketserver 模块、asyncio 库等。这些工具提供了不同级别和方式的网络编程支持,可以根据具体需求选择合适的工具进行开发。

socket

・Python 中最基本的网络编程接口

・提供了对底层网络通信的接口

・通过创建套接字(socket)对象,可以实现网络通信的各种操作【如建立连接、发送和接收数据等】

・这种方式比较底层,需要开发者处理更多的网络细节。

sockketserver

・socketserver 模块构建在 socket 模块之上,提供了更高级别的网络服务器框架

・通过继承 socketserver.BaseRequestHandler 类可以轻松创建自定义的网络服务器,处理客户端请求

・socketserver 模块简化了网络服务器的开发,提供了更友好的接口

asyncio

・asyncio 是 Python 提供的异步 I/O 框架

・通过使用协程(coroutine)实现异步编程

・可以同时处理多个网络连接而不阻塞程序执行

・asyncio 提供了高效的事件循环机制,可以轻松实现异步网络通信,适合处理高并发的网络应用。

在进行网络编程时,需要考虑以下几个方面:

  • 创建和管理网络套接字
  • 建立连接和通信协议的选择
  • 数据的传输和处理
  • 异常处理和错误检测
  • 并发处理和多线程/多进程支持

根据具体的需求和场景,选择合适的网络编程工具和技术来实现网络应用。Python 提供了丰富的网络编程支持,可以满足不同类型的网络应用开发需求。

1.3.1.简单了解socket

        在 Python 中进行 socket 编程,需要使用 socket 模块。该模块提供了创建和管理网络套接字的接口,可以通过套接字实现网络通信。

例.服务器端

import socket

# 创建 TCP 服务器套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定服务器地址和端口号
server_socket.bind(('127.0.0.1', 8000))

# 开始监听客户端连接
server_socket.listen()

# 等待客户端连接并处理请求
while True:
    # 接受客户端连接
    client_socket, client_address = server_socket.accept()
    
    # 处理客户端请求
    data = client_socket.recv(1024).decode()
    print('Received data:', data)
    
    # 发送响应数据
    response = 'Server: Hello, client!'
    client_socket.send(response.encode())
    
    # 关闭客户端连接
    client_socket.close()

例.客户端

import socket

# 创建 TCP 客户端套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 连接服务器地址和端口号
server_address = ('127.0.0.1', 8000)
client_socket.connect(server_address)

# 发送请求数据
request = 'Client: Hello, server!'
client_socket.send(request.encode())

# 接收响应数据
response = client_socket.recv(1024).decode()
print('Received data:', response)

# 关闭客户端套接字
client_socket.close()

UDP是面向无连接的协议。

        使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发送数据包,但不用担心是否到达目的端。

        虽然传输数据不可靠,但是速度比TCP快。

关于UDP就不赘述了。

你可能感兴趣的:(python学习,python,学习)