Python Socket编程指南:从入门到实战

文章目录

  • 一、什么是socket
  • 二、mq和socket区别
  • 三、客户端代码示例
  • 四、服务端代码示例
  • 五、结果展示

一、什么是socket

在 Python 中使用客户端/服务端 Socket 可以用于在网络上建立通信连接,实现数据的传输和交换。客户端通过 Socket 连接向服务端发送请求,服务端接收并处理这些请求,然后返回响应给客户端。

客户端/服务端 Socket 在网络编程中被广泛应用,适用面相当广泛。比如:

  1. 网络通信:可以通过 Socket 在不同计算机之间进行数据传输和通信,实现远程控制、消息传递等功能。

  2. 分布式系统:在分布式系统中,不同节点之间通过 Socket 进行通信,实现数据共享和协作计算。

  3. Web 开发:在 Web 开发中,客户端通过 Socket 连接 Web 服务器获取网页内容或提交表单数据。

  4. 即时通讯:即时通讯软件(如聊天工具)利用 Socket 实现用户之间的实时通信。

  5. 游戏开发:网络游戏中玩家之间的交互、数据传输等功能通常基于 Socket 实现。

总的来说,客户端/服务端 Socket 在网络编程中是一种非常基础和重要的通信方式,适用于各种场景下的网络通信需求。

二、mq和socket区别

特点 Socket(套接字) 消息队列(Message Queue)
类型 网络通信的编程接口 中间件技术
通信方式 面向连接的通信方式,实时数据传输 异步通信,消息队列中转消息
应用场景 实时通信、网络编程、游戏开发等 解耦应用组件、异步通信、分布式系统等
数据格式 通过 Socket 发送的数据需要自行处理数据格式 消息队列提供了消息格式化和解析的功能
可靠性 Socket 提供了一定程度的可靠性,但需要自行处理断连重连等问题 消息队列可提供较高的可靠性,保证消息的顺序和传递
扩展性 Socket 需要自行处理连接管理、数据传输等问题 消息队列提供了更多高级功能,如消息持久化、订阅发布等
适用范围 适用于点对点的实时通信需求 适用于解耦、异步通信、分布式系统等复杂场景

总的来说,Socket 更适用于实时的、点对点的通信需求,而消息队列更适用于解耦、异步通信以及构建复杂的分布式系统等场景。根据具体的应用需求,可以选择使用 Socket 或消息队列,或者结合两者来实现不同的通信功能。

三、客户端代码示例

首先创建了一个 Socket 对象,并通过 connect 方法连接到指定的主机和端口(这里是本地主机 localhost 和端口 8888)。
然后进入一个循环,不断接收用户输入的消息并通过 Socket 发送给服务端,同时接收来自服务端的响应消息并打印出来。
当用户输入 “exit” 后,退出循环并关闭 Socket 连接。

import socket

soc = socket.socket()
soc.connect(("localhost",8888))

while True:
    msg = input("请输入发送给服务端的消息:")
    if "exit" == msg:
        break
    soc.send(msg.encode("UTF-8"))
    data = soc.recv(1024).decode("UTF-8")
    print(f"服务端发来的消息:{data}")
soc.close()

四、服务端代码示例

首先创建了一个 Socket 对象,并通过 bind 方法绑定到指定的主机和端口(同样是本地主机 localhost 和端口 8888)。
然后通过 listen 方法开始监听客户端的连接请求。在接受到客户端连接后,进入一个循环,不断接收客户端发送的消息并打印出来,同时等待用户输入并将其发送给客户端。
当用户输入 “exit” 后,退出循环并关闭客户端连接和 Socket。

import socket

soc = socket.socket()
soc.bind(("localhost",8888))
soc.listen(1)

# 等待客户端链接
conn,address = soc.accept()

print(f"接收到了客户端的连接:{address}")

while True:
    data = conn.recv(1024).decode("UTF-8")
    print(f"客户端发来的消息:{data}")

    msg = input("请输入服务端发送的消息:")
    if "exit" == msg:
        break
    conn.send(msg.encode("UTF-8"))

conn.close()
soc.close()

五、结果展示

客户端和服务端之间的通信基于套接字(Socket),客户端通过套接字连接到服务端,在双方之间建立通信通道。客户端可以向服务端发送请求,服务端则可以接收并处理客户端请求,并向客户端返回响应。在实际应用中,客户端和服务端可能会多次交互,直至完成整个通信过程。
Python Socket编程指南:从入门到实战_第1张图片

你可能感兴趣的:(python,python,开发语言,socket,游戏)