使用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客户端和服务器。可以根据需要扩展代码,比如添加异常处理、支持多客户端连接等。

相关推荐
Aision_24 分钟前
代码安全学习手记(二):SCA 软件成分分析原理与 OWASP Dependency-Check 集成实战
运维·人工智能·学习·安全·web安全·网络安全
yinshuzhineng30 分钟前
如何提升生产线自动化水平,降低人工成本?
运维·人工智能·自动化·制造
码云骑士1 小时前
110-多模型热切换-API网关-LiteLLM代理-负载均衡故障转移
运维·python·负载均衡
虹科网络安全1 小时前
KnowBe4 SAT 是什么?安全意识培训平台功能与应用详解
网络
艺杯羹1 小时前
古典密码学攻防演进全景:从凯撒移位、频率分析到一次一密与恩尼格玛机破译
网络·人工智能·安全·网络安全·密码学·密码安全
发量惊人的中年网工2 小时前
多品牌酒店门店如何集中管控网络?SD-WAN 实现住客网与业务网隔离的实践
网络·组网
QuartusII72 小时前
sw202X安装教程
运维·windows
菜是原罪2 小时前
ECS CPU 100% 故障排查与安全事件复盘报告
运维·服务器·网络安全
qq_2153978972 小时前
docker镜像打包
运维·docker·容器