void *interpretWrapper(void* arg) {
char* res = (char*) arg;
cout << res[0] << endl;
}
void *recvConn(void * data) {
char buffer[1024];
int buffer_len = 1024;
while(true) {
memset(buffer, 0, buffer_len);
if((bytecount = recv(*csock, buffer, buffer_len, 0)) == -1) {
printf("yalehwyyy\n");
fprintf(stderr, "Error receiving data %d\n", errno);
printf("%d", csock);
break;
}else if (bytecount == 0) {
fprintf(stderr, "Socket Closed ! Robotino needs to reconnect !!\n");
break;
}
pthread_t thread_id = 0;
pthread_create(&thread_id, NULL, interpretWrapper, &buffer);
pthread_detach(thread_id);
printf("Received bytes %d\nReceived string \"%s\"\n", bytecount, buffer);
}
}
在上面的代码中,每当我收到一个放入缓冲区的字符串时,我都会在 recvConn 中打印该字符串,结果实际上是发送的字符串。但是,一旦将字符串传递给解释包装器,当我打印 res[0] 时得到的只是一个空字符,而预期的输出将是发送字符串的第一个字符。我也尝试使用字符串,也得到了一个空字符串。
此外,我尝试发送一个整数,而在interpretWrapper 中打印整数会正确生成传递的整数。我这两天一直在想办法,请问是什么问题?