程序员文章、书籍推荐和程序员创业信息与资源分享平台

网站首页 > 技术文章 正文

Python中实现Socket通讯(附详细代码)

hfteth 2025-04-09 16:23:41 技术文章 7 ℃

套接字(socket)是一种在计算机网络中进行进程间通信的方法,它允许不同主机上的程序通过网络相互通信。套接字是网络编程的基础,几乎所有的网络应用程序都使用某种形式的套接字来实现网络功能。套接字可以用于各种类型的网络协议,如TCP、UDP等。


在 Python 中使用套接字(socket)进行网络通讯是一种常见的做法。接下来我给大家提供一个简单的 TCP 服务器和客户端的例子,它们可以互相发送和接收消息。

服务器端 (Server)

  1. 导入 socket 库。
  2. 创建一个 socket 对象。
  3. 绑定 IP 地址和端口号到这个 socket。
  4. 监听连接请求。
  5. 接受客户端的连接。
  6. 与客户端通信:发送/接收数据。
  7. 关闭连接。
import socket

def start_server(host='127.0.0.1', port=65432):
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        # 绑定地址
        s.bind((host, port))
        # 开始监听
        s.listen()
        print(f"Server listening on {host}:{port}")
        
        while True:
            # 等待客户端连接
            conn, addr = s.accept()
            with conn:
                print('Connected by', addr)
                while True:
                    data = conn.recv(1024)
                    if not data:
                        break
                    print(f"Received: {data.decode()}")
                    # 发送回客户端
                    conn.sendall(data)

if __name__ == '__main__':
    start_server()

客户端 (Client)

  1. 导入 socket 库。
  2. 创建一个 socket 对象。
  3. 连接到服务器。
  4. 发送/接收数据。
  5. 关闭连接。
import socket

def start_client(host='127.0.0.1', port=65432):
    with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
        # 连接到服务器
        s.connect((host, port))
        message = "Hello, Server!"
        # 发送数据
        s.sendall(message.encode())
        # 接收响应
        data = s.recv(1024)
    
    print(f"Received from server: {data.decode()}")

if __name__ == '__main__':
    start_client()

使用说明

  • 确保先运行服务器脚本,然后运行客户端脚本。
  • 默认情况下,这里的例子使用本地回环地址 127.0.0.1 和端口 65432。你可以根据需要更改这些值。
  • 服务器会持续运行并等待新的连接,直到手动停止。
  • 每次客户端发送消息给服务器后,服务器会把相同的消息返回给客户端。

上面的代码展示了如何使用 Python 的标准库来实现基本的 TCP 客户端-服务器模型。对于更复杂的应用场景,可能还需要考虑错误处理、多线程或异步 I/O 等高级功能。

欢迎点赞关注!

Tags:

最近发表
标签列表