MicroPython Socket TCP链接记录 ESP8266

MicroPython Socket TCP链接记录 ESP8266

用于公司设备环境监控物联网验证,ESP32应该足够了

在这里插入图片描述
在这里插入图片描述

Server端

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time    : 2021/3/25 10:26
# @Author  : Link
# @Site    : 服务端
# @File    : socket_server.py
# @Software: PyCharm

from socketserver import BaseRequestHandler, ThreadingTCPServer


class Handler(BaseRequestHandler):

    # 启动一个链接
    def handle(self) -> None:
        address, pid = self.client_address
        print("%s connected! pid: %s" % (address, pid))
        while True:
            try:
                data = self.request.recv(1024)
                if not data: break
                print('->pid:%s say client:%s' % (pid, data))
                self.request.send(data.upper())
            except ConnectionError:
                print('->pid:%s close connect' % (pid))
                break
        print("request close\n")
        self.request.close()


if __name__ == '__main__':
    server = ThreadingTCPServer(('0.0.0.0', 8080), Handler)
    server.serve_forever()  # 链接循环

Client端

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# @Time    : 2021/3/26 15:56
# @Author  : Link
# @Site    : 客户端
# @File    : socket_client.py
# @Software: PyCharm

import socket
import asyncio

clients = [socket.socket(socket.AF_INET, socket.SOCK_STREAM) for _ in range(10)]
for client in clients:
    client.connect(('127.0.0.1', 8080))


async def client_connect_server(client, i):
    i = 0
    while True:
        i += 1
        if i == 20:
            break
        client.send(f'hello{i}'.encode('utf-8'))
        print(client.recv(1024).decode("utf-8"))
        await asyncio.sleep(.5)
    client.close()


if __name__ == '__main__':
    loop = asyncio.get_event_loop()
    tasks = [client_connect_server(client=client, i=index) for index, client in enumerate(clients)]
    loop.run_until_complete(asyncio.wait(tasks))

MicroPython端

# socket
import usocket
import network
from time import sleep

sta_if = network.WLAN(network.STA_IF)
sta_if.active(True)
print("connect wifi network...")
sta_if.connect("Link", "88888888")

def socket_connect():
  s = usocket.socket(usocket.AF_INET,usocket.SOCK_STREAM)
  s.connect(("172.18.17.100",8080))
  i = 0
  while True:
    i = i + 1
    if i == 10:
      print("socket connect close")
      s.close()
      break
    s.send("micropython\n")
    print(s.recv(64).decode()) # 如果不取出tcp buff 就会提示LmacRxBlk:1
    sleep(.1)
    
while True:
  if sta_if.isconnected():
    print("connect wifi network ok")
    socket_connect()
    break
  else:
    print("connect wifi network fail")
    sleep(1)
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值