如何在Android上通过wifi发送字符串流?

时间:2019-06-28 16:20:57

标签: java android sockets flutter outputstream

我正在通过wifi将Esp32与我的android手机连接,即esp用作接入点服务器。尝试发送要由esp读取的String。 这是arduino IDE上esp代码的链接:

Wifi_AP_server

这里有很多关于Java套接字的帮助,但是没有一个流与我一起工作,在这种简单的情况下,我实在无法解决问题! 我在AsyncTask内的MainActivity.java中编写了此Java代码,它是Flutter调用的MethodChannel的一部分。

Socket socket = null;
DataOutputStream outputStream = null;
socket = new Socket("192.168.4.1", 80);
outputStream = new DataOutputStream (socket.getOutputStream());
outputStream.writeUTF("Hello\n");
socket.close();

请注意,这是有问题的,因为有时它会成功发送两个或一个字符,大多数情况下,它只是与esp连接或断开连接而没有发送任何字符。我尝试了所有可以尝试的不同流,从esp到电话读取消息缓冲区,然后将其写回该缓冲区,就好像它是回显服务器一样,虽然效果很好,但这不是想要的场景!

在编写此python代码段代码后,我决定在这里提出此问题,该代码段使我确定Wifi_AP_server.ino esp代码可以正常工作。

import socket
HOST = '192.168.4.1'  # The server's hostname or IP address
PORT = 80        # The port used by the server
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))
    s.sendall(b'Hello, world\n')
    data = s.recv(1024)
print('Received', repr(data))

您可以尝试使用链接进行操作,然后发现它可以正常工作。 因此,请帮助我,我应该如何在android上使用java来做到这一点?

0 个答案:

没有答案