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

相关推荐
H_oRIZoN_1 小时前
Linux入门DAY41(51 单片机 串口与通信协议)
linux·运维·单片机
小马同学-3 小时前
OpenStack 使用实战:Web 界面与 CLI 命令行实验
运维·云计算·openstack
今天AI了吗3 小时前
什么是 AI Agent?它与直接调用大模型 API 有何区别
java·网络·人工智能·架构·java-ee
网安老伯4 小时前
都2026年了,还在问网络安全怎么入门?看完这一篇你就懂了
运维·计算机网络·web安全·网络安全·wireshark·密码学·网络攻击模型
小祺先生4 小时前
mt7921 debian系统 如何安装驱动
运维·网络·debian
m0_459872924 小时前
Linux 系统基础
linux·运维·服务器
fb_123455 小时前
Docker入门-第3章-容器镜像深度解析
运维·docker·容器
吴声子夜歌5 小时前
Shell编程——数组
linux·运维·shell
qq_508576095 小时前
机器人通讯协议
网络·机器人
2401_891957315 小时前
简单了解多路转接select
运维·服务器