使用socket库创建简单的客户端和服务器

以下是使用Python的socket库创建简单的客户端和服务器的示例。这个示例将展示如何建立一个基本的TCP连接,服务器接收数据并发送响应,客户端发送数据并接收响应。

服务器端代码

首先,我们编写服务器端代码,它将监听来自客户端的连接请求:

python 复制代码
import socket  

def start_server():  
    # 创建一个socket对象  
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  

    # 获取本地主机名和设置端口号  
    host = '127.0.0.1'  
    port = 65432  

    # 绑定socket到指定的地址和端口  
    server_socket.bind((host, port))  

    # 开始监听(可以接受连接的最大数量为1)  
    server_socket.listen(1)  
    print(f"服务器正在运行,监听 {host}:{port}")  

    while True:  
        # 接受客户端的连接  
        client_socket, addr = server_socket.accept()  
        print(f"接收到来自{addr}的连接")  

        # 接收客户端发送的数据  
        data = client_socket.recv(1024).decode()  
        print(f"接收到的数据: {data}")  

        # 发送响应  
        response = f"你好,客户端! 你发送了: {data}"  
        client_socket.send(response.encode())  

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

if __name__ == "__main__":  
    start_server()

客户端代码

接下来,我们编写客户端代码,它将连接到服务器并发送数据:

python 复制代码
import socket  

def start_client():  
    # 创建一个socket对象  
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  

    # 设置服务器的主机名和端口号  
    host = '127.0.0.1'  
    port = 65432  

    # 连接到服务器  
    client_socket.connect((host, port))  
    print(f"已连接到服务器 {host}:{port}")  

    # 发送数据  
    message = "您好,服务器!"  
    client_socket.send(message.encode())  
    print(f"发送的数据: {message}")  

    # 接收服务器的响应  
    response = client_socket.recv(1024).decode()  
    print(f"接收到的响应: {response}")  

    # 关闭连接  
    client_socket.close()  

if __name__ == "__main__":  
    start_client()

使用说明

  1. 运行服务器

    • 将服务器端代码保存到一个文件中,例如 server.py
    • 在命令行中运行 python server.py 启动服务器。
  2. 运行客户端

    • 将客户端代码保存到另一个文件中,例如 client.py
    • 在另一个命令行窗口中运行 python client.py 启动客户端。

结果

  • 服务器会显示接收到的数据以及客户端的连接信息。
  • 客户端会显示其发送的消息以及服务器的响应。

通过上述代码示例,您可以了解到如何使用Python的socket库创建基本的TCP客户端和服务器。可以根据需要扩展代码,比如添加异常处理、支持多客户端连接等。

相关推荐
就不掉头发18 分钟前
I/O复用
运维·服务器·c语言·开发语言
2401_8322981033 分钟前
云服务器:边缘计算时代的“智能节点”
运维·服务器·边缘计算
Coder_Boy_1 小时前
基于SpringAI的智能运维平台(AI驱动)
大数据·运维·人工智能
微爱帮监所写信寄信1 小时前
微爱帮监狱写信寄信工具信件加密技术方案
网络
开压路机1 小时前
Linux的基本指令
linux·服务器
lifewange1 小时前
linux管理服务的命令有哪些
linux·运维·服务器
专业开发者2 小时前
蓝牙技术联盟推出网络照明控制(NLC)规范
网络·物联网
Kiyra2 小时前
阿里云 OSS + STS:安全的文件上传方案
网络·人工智能·安全·阿里云·系统架构·云计算·json
麒qiqi2 小时前
进程间通信(IPC):管道通信全解析
linux·运维·服务器
小趴菜不能喝3 小时前
Docker 网络
网络·docker·容器