Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

python socket编程

作者:刎心封爱为伱锁情   发布日期:2025-05-24   浏览:69

# Python Socket 编程示例

import socket

# 创建一个服务器端的Socket对象
def create_server(host='127.0.0.1', port=65432):
    # AF_INET 表示使用IPv4地址,SOCK_STREAM 表示使用TCP协议
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server_socket:
        # 绑定IP和端口
        server_socket.bind((host, port))
        # 开始监听连接请求
        server_socket.listen()
        print(f"Server listening on {host}:{port}")

        # 接受客户端连接
        conn, addr = server_socket.accept()
        with conn:
            print(f"Connected by {addr}")
            while True:
                data = conn.recv(1024)
                if not data:
                    break
                print(f"Received: {data.decode()}")
                conn.sendall(data)

# 创建一个客户端的Socket对象
def create_client(host='127.0.0.1', port=65432):
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as client_socket:
        # 连接到服务器
        client_socket.connect((host, port))
        message = "Hello, Server!"
        client_socket.sendall(message.encode())
        data = client_socket.recv(1024)
        print(f"Received from server: {data.decode()}")

if __name__ == "__main__":
    import threading

    # 启动服务器线程
    server_thread = threading.Thread(target=create_server)
    server_thread.start()

    # 客户端代码在主进程中运行
    create_client()

    # 等待服务器线程结束
    server_thread.join()

解释说明:

  1. 创建服务器

    • create_server 函数用于创建一个简单的TCP服务器。
    • 使用 socket.socket() 创建一个Socket对象,指定使用IPv4地址 (AF_INET) 和TCP协议 (SOCK_STREAM)。
    • bind() 方法绑定服务器的IP地址和端口号。
    • listen() 方法使服务器开始监听连接请求。
    • accept() 方法接受客户端连接,并返回一个新的Socket对象和客户端地址。
  2. 创建客户端

    • create_client 函数用于创建一个简单的TCP客户端。
    • 使用 socket.socket() 创建一个Socket对象,同样指定使用IPv4地址和TCP协议。
    • connect() 方法连接到服务器的IP地址和端口号。
    • sendall() 方法发送数据到服务器,recv() 方法接收来自服务器的数据。
  3. 多线程运行

    • 使用 threading.Thread 启动服务器线程,使其在后台运行。
    • 主进程中调用 create_client 来模拟客户端行为。
    • 最后使用 join() 方法等待服务器线程结束。

上一篇:python的特性

下一篇:python **kwargs和*args区别

大家都在看

python时间格式

python ord和chr

python list.pop

python的for i in range

npm config set python

python代码简单

python读取文件夹

python中turtle

python 输出时间

python中list代表什么

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站