gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 16:46:19 24 4
gpt4 key购买 nike

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

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 不返回新套接字。它返回成功/失败状态。你应该

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

关于c - 无法读取服务器发送的消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43819015/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com