Post

Socket, TCP, and etc

TCP

Keepalive

https://tldp.org/HOWTO/html_single/TCP-Keepalive-HOWTO/

Socket in general

The first newbie question when doing socket programming is how to tell a socket has received all bytes from the other party. If you do not handle it well, you may get stuck forever at recv. The python Socket Programming HOWTO summarizes this issue as the fundamental truth of sockets:

messages must either be fixed length (yuck), or be delimited (shrug), or indicate how long they are (much better), or end by shutting down the connection

There are only 4 ways! Joash Xu illustrates the first three in his blog. For the last option, you can read Ivan Velichko’s blog. Also, I want to mention that HTTP protocol uses both delimited method and length method. It uses \r\n to separate the title line and header lines. Then it uses content-length header to determine the size of data section.

The best tutorial online is from Kevin He.

Side note: Kevin He built a company call Deepmotion. It sounds interesting.

Epoll

TOD: read this https://gist.github.com/dtoma/564375673b354397efc5 This is almost the same implementation as Java’s default http server implementation

This post is licensed under CC BY 4.0 by the author.