NodeMCU를 기반으로 작은 서버를 만들었습니다. 브라우저에서 연결할 때 모두 잘 작동하지만 문제가 시작되면 Android 앱 uisng OkHttp 또는 Volley에서 연결하려고 할 때 예외가 발생합니다. java.io.IOException : OkHttp를 사용하는 Connection에서 예기치 않은 스트림 종료, Volley를 사용하는 EOFException.
서버가 응답 한 후이 EOFException에 대한 문제는 매우 유사 하지만 응답을 찾지 못했습니다.
ESP 서버 코드
srv:listen(80, function(conn)
conn:on("receive", function(conn,payload)
print(payload)
conn:send("<h1> Hello, NodeMCU.</h1>")
end)
conn:on("sent", function(conn) conn:close() end)
end)
Android 코드
final RequestQueue queue = Volley.newRequestQueue(this);
final String url = "http://10.42.0.17:80";
final StringRequest request = new StringRequest(Request.Method.GET, url,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
mTemperatureTextView.setText(response.substring(0, 20));
System.out.println(response);
}
},
new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
System.out.println("Error + " + error.toString());
mTemperatureTextView.setText("That didn't work!");
}
}
);
mUpdateButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
queue.add(request);
}
});
다시 보내는 것은 HTTP가 아닙니다. 프로토콜에 구애받지 않는 HTML 조각 일뿐입니다. 또한 메모리 누수가 지속됩니다.
대신 이것을 시도하십시오.
srv:listen(80, function(conn)
conn:on("receive", function(sck,payload)
print(payload)
sck:send("HTTP/1.0 200 OK\r\nServer: NodeMCU on ESP8266\r\nContent-Type: text/html\r\n\r\n<h1> Hello, NodeMCU.</h1>")
end)
conn:on("sent", function(sck) sck:close() end)
end)
HTTP/1.0 200 OK
하며 줄 바꿈은 필수입니다.conn
을 변경 한 방법을 sck
참조 하십시오 . 자세한 내용 은 https://stackoverflow.com/a/37379426/131929 를 참조하십시오.보다 완전한 전송 예제 net.socket:send()
는 문서를 참조하십시오 . 그것은 단지 몇 바이트 이상을 보내기 시작하면 관련이 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다