【发布时间】:2021-11-28 04:43:53
【问题描述】:
我想我找到了一种在一个 ESP32 内的应用程序之间进行通信的方法。无论如何,它有效。 确实,我对这种方法的合法性有些怀疑,所以我向您致意。
我记得存在魔术地址“127.0.0.1” - loopback 地址也称为 localhost时间>。在日常生活中,此地址通常用于与程序员使用的同一台计算机建立 IP 连接。例如,如果我正在编写一个客户端-服务器,那么使用 localhost 我可以在一个应用程序中调试交换协议,而无需使用额外的计算机。
同时使用环回接口绕过任何本地网络接口硬件。
而且我认为在您的系统中遵守这一原则的可能性很大,我只需要尝试:如果它有效怎么办?
而且它确实有效。以下是两个应用程序的文本和来自并行终端的屏幕截图。 Receiver.toit 应用首先启动,然后sender toit。
receiver.toit:
import net
main :
network_interface := net.open
serverSocket := network_interface.tcp_listen 1234
print ("Wait...")
socket := serverSocket.accept
print ("Accept was done...")
data := socket.read
clientAddr := socket.peer_address.ip.stringify
print ("[$clientAddr]->[$data.to_string]")
socket.close
print ("Socket closed...")
serverSocket.close
print ("ServerSocket closed...")
sender.toit:
import net
LOOPBACK := "127.0.0.1"
main :
network_interface := net.open
clientSocket := network_interface.tcp_connect LOOPBACK 1234
print ("Connect...")
clientSocket.write "Hello from flatmate..."
print ("Write was done...")
clientSocket.close
print ("Socket closed...")
接收方终端:
micrcx@micrcx-desktop:~/toit_apps/Hsm3/tests$ toit -d=dell run receiver.toit
2021-10-08T06:41:03.937058Z: <process initiated>
Wait...
Accept was done...
[127.0.0.1]->[Hello from flatmate...]
Socket closed...
ServerSocket closed...
2021-10-08T06:41:35.166388Z: <process terminated - exit code: 0>
micrcx@micrcx-desktop:~/toit_apps/Hsm3/tests$
发件人终端:
micrcx@micrcx-desktop:~/toit_apps/Hsm3/tests$ toit -d=dell run sender.toit
2021-10-08T06:41:34.641365Z: <process initiated>
Connect...
Write was done...
Socket closed...
2021-10-08T06:41:34.917420Z: <process terminated - exit code: 0>
micrcx@micrcx-desktop:~/toit_apps/Hsm3/tests$
【问题讨论】:
-
嗯,我在这篇文章中找不到问题。
-
是的,我对这种方法的合法性有些怀疑,所以我正在向您致意。
标签: localhost tcpclient esp32 tcpserver toit