无法读取服务器发送的消息

Unable to read messages sent by server

我有一个服务器客户端连接,我正在尝试读取服务器发送的消息。我在 main 函数中使用的代码有效,但是当我尝试读取线程中的消息时,它没有读取任何内容。这是我正在使用的代码:

newsockfd = connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr));

sock_desc = malloc(1);
*sock_desc = newsockfd; 

//create a new thread
pthread_t client_thread;
if(pthread_create(&client_thread, NULL, thread_function, (void *)sock_desc)<0)
     error("ERROR creating thread!");

//thread function
void *thread_function(void * sock_desc){

//get the socket descriptor
int sock = *(int*)sock_desc;
printf("sock %d\n", sock);
int n;

printf("New thread\n");
fflush(stdout);

bzero(buffer,256);
n = read(sock,buffer,255);
if (n < 0) error("ERROR reading from socket");
printf("Here is the message: %s\n",buffer);

return (void *)0;

}//close thread_function()

有人可以帮忙吗?

正如评论中指出的,您的分配是错误的,但是

    newsockfd = connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr));

的问题。 connect 没有 return 新套接字。它 return 是 success/failure 状态。你应该

    if (connect(sockfd, (struct sockaddr *) &serv_addr, sizeof(serv_addr)) < 0) {
        handle_connection_error();
    } else {
        pthread_create(&client_thread, NULL, thread_function, (void *)&sockfd);
    }