首页
学习
活动
专区
圈层
工具
发布

Python进阶-Socket

Socket 使用 IP 地址 + 端口 + 协议的三元组唯一标识一个通信链路。服务器端的一个通信链路可以对应于多个客户端,比如一个 Web 服务器的 80 端口可以同时服务于大量的客户端。

  • TCP 服务器端:
代码语言:javascript
代码运行次数:0
复制
import socket
import datetime

HOST = '0.0.0.0'
PORT = 8000

# AF_INET 说明使用 IPv4 地址,SOCK_STREAM 指明 TCP
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 绑定 IP 与 端口
s.bind((HOST, PORT))
# 监听
s.listen(1)

while True:
  # 接收 TCP 连接,并返回新的 Socket 对象
  conn, addr = s.accept()
  # 输出客户端的 IP 地址
  print("客户端 IP 地址:", str(addr))
  dt = datetime.datetime.now()
  message = "当前时间" + str(dt)
  
  # 向客户端发送当前时间
  conn.send(message)
  print("发送", message)
  
  # 关闭连接
  conn.close()

通过 socket()、bind()、listen() 的一系列调用实现了对指定端口的监听,通过 accept() 接收客户端的连接,当有客户端连接成功后将当前系统时间发送给客户端,并马上关闭连接。代码主体处于 while 循环中,所以程序将不断监听并一直运行。

  • 客户端:
代码语言:javascript
代码运行次数:0
复制
import socket

HOST = "127.0.0.1"
PORT = 8000

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

s.connect((HOST, PORT))

print("连接端口和地址", HOST, PORT)
# 接收数据,本次接收数据的最大长度为1024
data = s.recv(1024)
print("接收服务端返回的数据", data)

# 关闭连接
s.close

客户端通过 connect() 调用、连接服务器,连接成功后接收从服务器发来的数据,然后关闭连接、退出程序。

举报
领券