Reading from sockets C HTTP

前端 未结 3 1776
慢半拍i
慢半拍i 2021-01-25 08:19

I\'m wondering how I can tell if all the data has been received from a socket. It\'s a simple web proxy and right now I\'m handling the request part, so what\'s sent should term

相关标签:
3条回答
  • 2021-01-25 08:30

    I think the plan you have is almost right. You need to keep loading the read data into a buffer until you find the desired pattern '\r\n\r\n', then you know you have the entire request and can pass it off to your processing logic, remove the request from the buffer and repeat.

    0 讨论(0)
  • 2021-01-25 08:39

    HTTP is not a trivial protocol, taking several RFCs. Just matching double linefeed/new line won't do. At the very minimum you will have to parse the request headers to figure out what encoding is there, and then, optionally, work through the request body.

    Look into libcurl or any of the available open-source web-servers to appreciate the complexity.

    0 讨论(0)
  • 2021-01-25 08:50

    It depends if you are on a Blocking or Non-Blocking socket.

    • If you are on a non-blocking socket, it can return 0 and set errno to EAGAIN. It just means you have to wait before trying again to read
    • If you are on a blocking socket, 0 will indicate end of File
    0 讨论(0)
提交回复
热议问题