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

python socket菜鸟教程

作者:还依然存在   发布日期:2026-03-14   浏览:87

# 导入 socket 模块
import socket

# 创建一个服务器端的 Socket 对象
def create_server():
    # 创建一个 TCP/IP socket
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 绑定 socket 到本地地址和端口
    server_address = ('localhost', 10000)
    print(f'Starting up on {server_address[0]} port {server_address[1]}')
    server_socket.bind(server_address)

    # 监听传入连接,参数指定等待连接的最大数
    server_socket.listen(1)

    while True:
        # 等待连接
        print('Waiting for a connection...')
        connection, client_address = server_socket.accept()

        try:
            print(f'Connection from {client_address}')

            # 接收数据
            while True:
                data = connection.recv(16)
                print(f'Received: {data.decode()}')

                if data:
                    # 发送数据回客户端
                    connection.sendall(data.upper())
                else:
                    print('No more data from', client_address)
                    break

        finally:
            # 清理连接
            connection.close()

# 创建一个客户端的 Socket 对象
def create_client():
    # 创建一个 TCP/IP socket
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    # 连接到服务器
    server_address = ('localhost', 10000)
    print(f'Connecting to {server_address[0]} port {server_address[1]}')
    client_socket.connect(server_address)

    try:
        # 发送数据
        message = 'This is the message. It will be repeated.'
        print(f'Sending: {message}')
        client_socket.sendall(message.encode())

        # 接收响应
        amount_received = 0
        amount_expected = len(message)

        while amount_received < amount_expected:
            data = client_socket.recv(16)
            amount_received += len(data)
            print(f'Received: {data.decode()}')

    finally:
        # 清理连接
        print('Closing socket')
        client_socket.close()

if __name__ == '__main__':
    # 你可以在这里选择运行服务器或客户端代码
    # create_server()
    create_client()

解释说明:

  1. 创建服务器端

    • create_server() 函数创建了一个服务器端的 Socket 对象。
    • 使用 socket.socket() 创建一个 TCP/IP 套接字。
    • 使用 bind() 方法将套接字绑定到本地地址和端口。
    • 使用 listen() 方法开始监听传入连接。
    • 使用 accept() 方法等待并接受客户端连接。
    • 使用 recv() 方法接收客户端发送的数据,并使用 sendall() 方法将数据转换为大写后返回给客户端。
  2. 创建客户端

    • create_client() 函数创建了一个客户端的 Socket 对象。
    • 使用 connect() 方法连接到服务器。
    • 使用 sendall() 方法发送数据到服务器。
    • 使用 recv() 方法接收服务器返回的数据。
  3. 运行代码

    • if __name__ == '__main__': 部分,可以选择运行服务器或客户端代码。注释掉了服务器代码以避免同时运行时产生冲突。

上一篇:python上传文件

下一篇:python set类型

大家都在看

python 二维码识别

python excel 库

python时间格式

pythoneval函数用法

列表切片操作python

python读取文件路径

staticmethod在python中有

python 保存json文件

python开发windows应用程序

python中len是什么意思

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

Laravel 中文站