c - 如何在套接字 C 中看到 HTTP 请求
问题描述
我正在尝试查看对我的套接字服务器的 HTTP 请求。当我从浏览器请求这个服务器时,响应自然是无效的,因为这里没有 HTTP 响应。但我想在我的终端屏幕上看到这个 HTTP 请求。我该怎么做,有什么想法吗?
它只是多线程套接字服务器代码:
void *connection_handler(void *socket_desc)
{
//Get the socket descriptor
int sock = *((int*)socket_desc);
char *message = "Greetings! I am your connection handler\n";;
//Send some messages to the client
write(sock , message , strlen(message));
message = "Its my duty to communicate with you";
write(sock , message , strlen(message));
free(socket_desc); //Free the socket pointer
return 0;
}
int main(int argc, char *argv[])
{
int socket_desc, new_socket, c, *new_sock;
struct sockaddr_in server, client;
char *message;
socket_desc = socket(AF_INET , SOCK_STREAM , 0);
if (socket_desc == -1)
{
puts("Could not create socket");
return 1;
}
server.sin_family = AF_INET;
server.sin_addr.s_addr = INADDR_ANY;
server.sin_port = htons(8888);
if(bind(socket_desc, (struct sockaddr *)&server, sizeof(server)) < 0)
{
puts("Binding failed");
return 1;
}
listen(socket_desc, 3);
puts("Waiting for incoming connections...");
c = sizeof(struct sockaddr_in);
while((new_socket =
accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c)) )
{
puts("Connection accepted");
message = "Hello Client, I will assign a handler for you\n";
write(new_socket, message, strlen(message));
pthread_t sniffer_thread;
new_sock = malloc(1); // a memory allocator
*new_sock = new_socket;
if(pthread_create(&sniffer_thread, NULL, connection_handler,
(void*)new_sock) < 0)
{
puts("Could not create thread");
return 1;
}
puts("Handler assigned");
}
return 0;
}
解决方案
推荐阅读
- html - 如何在包含图标的 div 中居中文本
- javascript - 未在导入的组件上设置 AEM 6.2 data-sly-resource resourceType
- python - 说出单词时自动语音识别
- dart - 遵循最佳实践在颤振中存储 API 密钥的正确方法
- vagrant - Vagrant up --provision 给出错误
- sql - Oracle SQL 条件排序
- reactjs - Jest / Enzyme - 生命周期方法中的模拟异步函数
- sql - 在 sql 中随时间跟踪记录更新的最佳实践是什么?
- python - 嵌套if条件和break
- java - Spring Boot 国际化总是偏爱英文 in English lang OS