【发布时间】:2018-01-15 00:51:34
【问题描述】:
我在写一个简单的http服务器,先来看看这部分代码:
static void *connection_handler(void *connection) {
/* cast the connection */
Connection *c = (Connection*)connection;
HttpRequest req;
char buffer[1024];
size_t bytes_recv = recv(c->s, buffer, 1024, 0);
parse_http_request(&req, buffer, bytes_recv);
printf("Received connection!");
//printf("%s", buffer);
/* cleanup */
krystal_close_socket(c->s);
free(connection);
return NULL;
}
这是我的连接处理程序,每个连接我都将它推送到线程向量,我得到了奇怪的错误。当带有接收数据的 printf 被注释时,所有“接收到的连接”消息在服务器循环停止后显示(我已设置在 5 个连接后停止服务器)但是..当我打印接收到的数据时,每个连接都有效,缓冲区是印在每个连接上。 WTF?!
【问题讨论】:
标签: c multithreading sockets httpserver