简介

socket(简称 套接字)是进程之间通信一个工具,
好比现实生活中的插座,所有的家用电器要想工作都是基于插座进行
进程之间想要进行网络通信需要socket,它负责进程之间的网络数据传输
2个进程之间通过Socket进行相互通讯,就必须有服务端客户端

  • Socket服务端:等待其它进程的连接、可接受发来的消息、可以回复消息
  • Socket客户端:主动连接服务端、可以发送消息、可以接收回复

pEFxQ0O.jpg

服务端

代码

import socket
import time
socket_server = socket.socket()     # 创建socket对象
host , port = '127.0.0.1' , 6565
socket_server.bind((host,port))    # 绑定IP及端口
socket_server.listen(1)     # 监听,参数表示可接受的连接数量
conn , address = socket_server.accept()    # 阻塞,等待客户端连接,采用这种方式可直接接收二元元组内的两个元素
conn.send('我是服务端,很高兴与你连接!'.encode('utf-8'))
print(f"服务端接收到链接,客户端地址:{address}")
while True:
    data : str = conn.recv(1024).decode("UTF-8")  # 接收客户端发来的信息,采用服务端与客户端连接的对象,recv是缓冲区
    print(f"接收到客户端发来的信息:{data}")
    if data == 'exit':
        msg = "已收到结束指令,即将关闭连接!!!".encode("utf-8")
        conn.send(msg)
        break
    msg = f"<自动回复>当前时间戳:{time.time()}".encode("utf-8")
    conn.send(msg)  # 服务端向客户端发送信息
    print(msg.decode("utf-8"))
conn.send('再见!'.encode('utf-8'))
conn.close()
socket_server.close()

运行

pEFxl7D.png

客户端

代码

import socket , time
host , port = '127.0.0.1' , 6565
socket_client = socket.socket()
socket_client.connect((host,port))
socket_client.send('我是客户端,很高兴与你连接!'.encode('utf-8'))
while True:
    msg = f"<客户端自动回复>{time.time()}".encode('utf-8')
    data = socket_client.recv(1024).decode('utf-8')
    print(f"收到服务端信息:{data}")
    if data == 'exit':
        msg = '收到来自服务端的<退出>指令'.encode('utf-8')
        socket_client.send(msg)
        break
    socket_client.send(msg)
socket_client.send('再见!'.encode('utf-8'))
socket_client.close()

运行

pEFx3Ae.png

最后修改:2025 年 01 月 17 日
如果觉得我的文章对你有用,请随意赞赏