c - 从 TLS TCP 套接字读取时收到乱码
问题描述
我有一个 C 程序(简单的 Web 服务器),它侦听端口 8080 以获取传入的 HTTP 请求。如果我提出一个简单的http://
请求,效果很好,我可以看到请求标头。但是当我发出https://
SSL/TLS 请求时,我看到了一些乱码?????
相反,我希望看到 SSL/TLS 客户端问候握手消息。
GET / HTTP/1.1
Host: localhost:8080
???? ???? ??
为什么我没有看到初始化握手消息的 TLS 客户端问候?它尚未加密(至少此时不应加密)
这是我的 C 服务器,我正在使用read( new_socket , buffer, 30000)
// Server side C program to demonstrate HTTP Server programming
#include <stdio.h>
#include <sys/socket.h>
#include <unistd.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <string.h>
#define PORT 8080
int main(void)
{
int server_fd, new_socket; long valread;
struct sockaddr_in address;
int addrlen = sizeof(address);
char *hello = "HTTP/1.1 200 OK\nContent-Type: text/plain\nContent-Length: 12\n\nHello world!";
// Creating socket file descriptor
server_fd = socket(AF_INET, SOCK_STREAM, 0);
address.sin_family = AF_INET;
address.sin_addr.s_addr = INADDR_ANY;
address.sin_port = htons( PORT );
memset(address.sin_zero, '\0', sizeof address.sin_zero);
bind(server_fd, (struct sockaddr *)&address, sizeof(address));
while(1)
{
printf("\n+++++++ Waiting for new connection ++++++++\n\n");
if ((new_socket = accept(server_fd, (struct sockaddr *)&address, (socklen_t*)&addrlen))<0)
{
perror("In accept");
exit(EXIT_FAILURE);
}
char buffer[30000] = {0};
valread = read( new_socket , buffer, 30000);
printf("%s\n",buffer );
write(new_socket , hello , strlen(hello));
printf("------------------Hello message sent-------------------");
close(new_socket);
}
return 0;
}
解决方案
推荐阅读
- amazon-web-services - 如何在 AWS Glue/Athena 上使用 AVRO 格式
- microsoft-graph-api - 图/站点端点的 HTTP 400 - 使用资源进行身份验证时出错
- ruby - 在 Time.new.to_date.to_time 上可能会发生 nil 取消引用
- css - 垂直滚动捕捉实现不起作用
- r - 如何根据索引向量检查和添加数据框中的缺失行?
- excel - 如何在 Azure 逻辑应用中解析 Excel 电子表格
- python - 如何修复递归列表中的单独输出
- docusignapi - 无法选择要用于提升集成密钥的生产帐户 ID?
- angular - 使用 auth0 lock 登录后如何将用户重定向到他们想要的 url
- scala - 为什么它不能识别 asScala 方法?