Я пытаюсь создать очень простой http-сервер с модулем Unix низкого уровня , чтобы лучше понять, как работает HTTP-сервер. Это мой текущий код:ocaml упрощающий HTTP-сервер с модулем Unix
let() =
let socket_fd = Unix.socket Unix.PF_INET Unix.SOCK_STREAM 0 in
let _ = Unix.bind socket_fd (Unix.ADDR_INET ((Unix.inet_addr_of_string "127.0.0.1"), 8888)) in
let _ = Unix.listen socket_fd 1 in
let (file_descr,sockaddr) = Unix.accept socket_fd in
let b = Bytes.create 1024 in
let _ = Unix.recv file_descr b 0 0 [Unix.MSG_PEEK] in
print_endline b;
Когда я открываю WebBrowser & прибой в localhost:8888
программа отображает символ новой строки и завершает работу. Почему он не распечатывает запрос?
Согласно документации Unix
модуля recv
имеет следующую подпись:
val recv : file_descr -> bytes -> int -> int -> msg_flag list -> int
Receive data from a connected socket.
Что смысл ... -> int -> int -> ...
? Я понятия не имею, что я должен пропустить в этих двух ints.
Также, как я могу узнать, какой размер a должен дать bytes
?
ли вам подумайте, что нужно довести до сведения общественности, что в таких модулях отсутствует элементарная документация? – RichouHunter
может быть да ... но я не знаю, какой из них лучше всего подходит: может быть, предлагая прямое повышение doc на github. –
Спасибо за ответ! Я понимаю это сейчас, и счастливый новый год: D – Seneca