TinyHttpd | TinyHttpd是一个运行于Android上轻量且高效的Http服务器组件
kandi X-RAY | TinyHttpd Summary
kandi X-RAY | TinyHttpd Summary
TinyHttpd是一个运行于Android上轻量且高效的Http服务器组件
Support
Quality
Security
License
Reuse
Top functions reviewed by kandi - BETA
- Decodes the request bytes into an HTTP request
- Decode parameters
- Parses a GET method
- Returns the HTTP version for the given HTTP version
- Initialize the server
- Get the HMAC SHA1 for a string
- Encodes a URL
- Create a full URL
- Main loop
- Handle accept
- Read the request bytes
- Runs the daemon thread
- Service with interceptor chain
- Intercept the request
- Get the first value of a parameter
- Checks that the given object is not null or empty
- Closes the server
- Returns true if the request is partial
- Sets the HTTP content length
- Log a WARN message
- Performs POST request
- Intercept the request chain
- Override this method to respond to a GET
- Generate the next interceptor chain in the chain
- Gets the header offset
- Encode HTTP response
TinyHttpd Key Features
TinyHttpd Examples and Code Snippets
Community Discussions
Trending Discussions on TinyHttpd
QUESTION
I am studying a tiny web server, it can receive GET-request from browser and return an html file. The serve_file
-function sends response messages to browser, and the get_line
-function gets a line from socket buffer. I don't know why must read & discard request headers. I try to comment the two lines and the browser show a connection reset page. I guess the server socket receive buffer is full, but I don't know the specific reason. Could anyone explain it?
source code
ANSWER
Answered 2018-Oct-27 at 09:34The behavior you observed is a standard socket behavior.
If data received from a peer has not been read by the application and the application calls close
on the socket then OS does not do the usual TCP connection finalization. It resets the connection immediately instead finalization. If application really wants gracefully close the connection when there is unread data in the received buffer then it must call shutdown(socket, SHUT_WR)
before calling close
.
And why is the socket API implemented that way? Because this handling can avoid dos attacks. If close
executes normal TCP session finalization then following attack is possible:
- A malicious client opens a TCP connection
- The server accepts the connection and starts receiving data
- The client sends a continuous stream of let say random data
- The server quickly detects that received data is wrong and calls
close
on the socket. close
just sends aFIN
and then waits for the peer close. Server resources remain allocated because normalFIN
just close the direction towards the client. The client still may send data and the recv buffer would not be freed.
But when the close initiates connection reset then resources related to this TCP connection is freed immediately. A dos attack is then a bit more complicated.
See https://www.spinics.net/lists/linux-c-programming/msg01345.html for more details.
Community Discussions, Code Snippets contain sources that include Stack Exchange Network
Vulnerabilities
Install TinyHttpd
You can use TinyHttpd like any standard Java library. Please include the the jar files in your classpath. You can also use any IDE and you can run and debug the TinyHttpd component as you would do with any other Java program. Best practice is to use a build tool that supports dependency management such as Maven or Gradle. For Maven installation, please refer maven.apache.org. For Gradle installation, please refer gradle.org .
Support
Reuse Trending Solutions
Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items
Find more librariesStay Updated
Subscribe to our newsletter for trending solutions and developer bootcamps
Share this Page