MST

星途 面试题库

面试题:Python中Socket数据传输之基础实现

请使用Python的Socket模块编写一个简单的客户端 - 服务器程序,实现服务器接收客户端发送的字符串并返回该字符串的大写形式。要求清晰展示Socket的创建、绑定、监听、连接、数据发送与接收等基本操作步骤。
15.7万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

服务器端代码

import socket


def server():
    # 创建socket对象
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 获取本地主机名
    host = socket.gethostname()
    port = 9999
    # 绑定端口号
    server_socket.bind((host, port))
    # 设置最大连接数,超过后排队
    server_socket.listen(5)
    while True:
        # 建立客户端连接
        client_socket, addr = server_socket.accept()
        print('连接地址: %s' % str(addr))
        # 接收客户端发送的数据
        data = client_socket.recv(1024)
        data = data.decode('utf-8')
        print('接收数据: %s' % data)
        # 将数据转换为大写形式
        upper_data = data.upper()
        # 发送数据到客户端
        client_socket.send(upper_data.encode('utf-8'))
        # 关闭客户端连接
        client_socket.close()


if __name__ == '__main__':
    server()

客户端代码

import socket


def client():
    # 创建socket对象
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 获取本地主机名
    host = socket.gethostname()
    port = 9999
    # 连接服务,指定主机和端口
    client_socket.connect((host, port))
    message = 'Hello, Server!'
    # 发送数据到服务器
    client_socket.send(message.encode('utf-8'))
    # 接收服务器返回的数据
    data = client_socket.recv(1024)
    data = data.decode('utf-8')
    print('接收数据: %s' % data)
    # 关闭连接
    client_socket.close()


if __name__ == '__main__':
    client()