実装してみた。素朴すぎてタイムアウトの設定もできないし自動でヘッダーを付与してくれる機能もない。IPv6にも対応してない。
github.comシステムコールだけでHTTP、TCP、UDPクライアント作ってみた。 https://t.co/9JzWUAuEf1
— Kohei Kimura (@cohhei) 2020年2月1日
[追記]クライアントだけでなくサーバーも実装できるようにした。公式のnet/http
のようにHandleFunc
とListenAndServe
でサーバーが立ち上がる。開発関連のまとめツイートは↓
Implemented an http server by using only system calls.
— Kohei Kimura (@cohhei) 2020年2月8日
システムコールだけで作るhttpサーバーできたhttps://t.co/mmV5kchMfb pic.twitter.com/N0C987TCzG
net/http
と同じようなインターフェースで使えるtr;dr
- ネットワークに苦手意識があったので勉強しはじめた。
- 勉強のためにシステムコールを直接使ってTCP通信を行うHTTPクライアントとTCPクライアントを作ってみた。
- ついでにUDPクライアントも作った。
- HTTPサーバーも作った。
- カーネルすごい。インターネットすごい。