I am using the SocketClient example of Kolban and try to read reply from SocketServer
here is the snippet
char *data = "Hello world";
rc = send(sock, data, strlen(data), 0);
ESP_LOGE(tag, "send: rc: %d", rc);
vTaskDelay(1000/portTICK_PERIOD_MS);
/* Check answer */
int ret = 0;
int cnt = 0;
do {
/* Reset buffer */
memset(data_buffer, 0x00, sizeof(data_buffer));
/* Read socket */
ESP_LOGE(tag, "read");
ret = read(sock, data_buffer, 1000);
ESP_LOGE(tag, "ret:%d cnt %d",ret,cnt);
cnt++;
} while(ret != 0 && cnt < 1000);
and here the snippet from Android:
private class SocketServerThread extends Thread {
int count = 0;
@Override
public void run() {
try {
serverSocket = new ServerSocket(SocketServerPORT);
while (true) {
if (count%4 == 0) message = "";
Socket socket = serverSocket.accept();
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line;
String data = "";
while ((line = in.readLine()) != null) {
Log.d("line of data ", line);
data += line + "\n";
}
int messageLength = data.length();
SocketServerReplyThread socketServerReplyThread = new SocketServerReplyThread(socket, messageLength);
socketServerReplyThread.run();
count++;
String lString = String.format("%d",messageLength);
message += lString + " bytes#" + count + " from " + socket.getInetAddress() + ":" + socket.getPort() + "\n";
updateInfoLabel();
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
private class SocketServerReplyThread extends Thread {
private Socket hostThreadSocket;
int cnt;
SocketServerReplyThread(Socket socket, int c) {
hostThreadSocket = socket;
cnt = c;
}
@Override
public void run() {
OutputStream outputStream;
String msgReply = "#" + cnt;
try {
Log.d(TAG, String.format("sending reply to client %s",msgReply));
outputStream = hostThreadSocket.getOutputStream();
PrintStream printStream = new PrintStream(outputStream);
printStream.print(msgReply);
printStream.close();
Log.d(TAG, "message was sent");
message += "=>" + msgReply + "\n";
updateInfoLabel();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
message += "Something wrong! " + e.toString() + "\n";
}
updateInfoLabel();
}
}
when using the debugger I see that both hang in the read statement
ESP32: ret = read(sock, data_buffer, 1000);
Android: while ((line = in.readLine()) != null) {
any ideas?
Socket Client read reply hangs
-
- Posts: 3
- Joined: Sun Jan 29, 2017 10:20 am
Jump to
- English Forum
- Explore
- News
- General Discussion
- FAQ
- Documentation
- Documentation
- Sample Code
- Discussion Forum
- Hardware
- ESP-IDF
- ESP-BOX
- ESP-ADF
- ESP-MDF
- ESP-WHO
- ESP-SkaiNet
- ESP32 Arduino
- IDEs for ESP-IDF
- ESP-AT
- ESP IoT Solution
- ESP RainMaker
- Rust
- ESP8266
- Report Bugs
- Showcase
- Chinese Forum 中文社区
- 活动区
- 乐鑫活动专区
- 讨论区
- 全国大学生物联网设计竞赛乐鑫答疑专区
- ESP-IDF 中文讨论版
- 《ESP32-C3 物联网工程开发实战》书籍讨论版
- 中文文档讨论版
- ESP-AT 中文讨论版
- ESP-BOX 中文讨论版
- ESP IoT Solution 中文讨论版
- ESP-ADF 中文讨论版
- ESP Mesh 中文讨论版
- ESP Cloud 中文讨论版
- ESP-WHO 中文讨论版
- ESP-SkaiNet 中文讨论版
- ESP 生产支持讨论版
- 硬件问题讨论
- 项目展示
Who is online
Users browsing this forum: Baidu [Spider] and 157 guests
- All times are UTC
- Top
- Delete cookies
About Us
Espressif Systems is a fabless semiconductor company providing cutting-edge low power WiFi SoCs and wireless solutions for wireless communications and Internet of Things applications. ESP8266EX and ESP32 are some of our products.