Mercurial > public > hey
comparison README.md @ 16:38d2aa61bcbc
Change info files
author | Dennis <dennis@denniscm.com> |
---|---|
date | Fri, 11 Aug 2023 17:40:32 +0000 |
parents | 07f578438b0f |
children | 4d10742d7dff |
comparison
equal
deleted
inserted
replaced
15:07f578438b0f | 16:38d2aa61bcbc |
---|---|
1 # Hey! | |
2 | 1 |
3 Hey! is a simple TCP streaming app. | 2 # hey |
4 | 3 |
5 ## Usage | 4 Hey! is a simple TCP streaming app developed in C using POSIX APIs. Both client and server are containerized using Docker. I've made a video about this project -> [Youtube](https://youtu.be/r3CQ0euv6TQ). |
6 | 5 |
7 Make sure you have Docker installed. | 6 - Docs: <https://denniscm.com/proj/hey.html> |
7 - Main repo on SourceHut: <https://git.sr.ht/~denniscmartin/hey> | |
8 - Mirrors: | |
9 - Github: <https://github.com/denniscmartin/hey> | |
10 - Gitlab: <https://gitlab.com/denniscmartin/hey> | |
8 | 11 |
9 ```bash | |
10 ./run.sh | |
11 ``` | |
12 | |
13 Using docker compose, this script build the Docker images (server and client), create a user-defined bridge network, and run both containers. | |
14 After that, you will be provided with the client shell to send messages to the server. | |
15 | |
16 To close the connection type `exit` from the client shell and press `ENTER`. | |
17 | |
18 Some things that I find interesting: | |
19 - Run `docker logs --follow hey-server-1` in another terminal. Doing that you can see the messages arrive at the server. | |
20 - If you have Wireshark installed you can use it to sniff the packets sent in the Docker network. This is good to understand TCP. | |
21 | |
22 ## What could you do next? | |
23 | |
24 A good exercise will be to implement logic for some commands in the server. For example, you could program the server to send to the client the current | |
25 date every time the server receives the command `date`. | |
26 | 12 |
27 ## References | 13 ## References |
28 | 14 |
29 This is the material I used to develop Hey!. The Beej's Guide to Network Programming is a nice introduction. Super easy to read: | 15 This is the material I used to develop Hey!. The Beej's Guide to Network Programming is a nice introduction. Super easy to read: |
30 - [What is a web server](https://developer.mozilla.org/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_web_server) | 16 |
31 - [HTTP Protocol](https://www.rfc-editor.org/rfc/pdfrfc/rfc7231.txt.pdf) | 17 - [What is a web server?](https://developer.mozilla.org/en-US/docs/Learn/Common_questions/Web_mechanics/What_is_a_web_server) |
32 - [Socket programming Oracle](https://docs.oracle.com/cd/E19253-01/817-4415/6mjum5som/index.html) | 18 - [HTTP protocol](https://www.rfc-editor.org/rfc/pdfrfc/rfc7231.txt.pdf) |
33 - [Beej's Guide to Network Programming](https://beej.us/guide/bgnet/html/split/index.html) | 19 - [Socket programming Oracle](https://docs.oracle.com/cd/E19253-01/817-4415/6mjum5som/index.html) |
34 - [How does port number really work](https://stackoverflow.com/questions/13190176/how-does-port-number-really-work-in-tcp/29045432#29045432) | 20 - [Beej's guide to network programming](https://beej.us/guide/bgnet/html/split/index.html) |
21 - [How does port numbers really work?](https://stackoverflow.com/questions/13190176/how-does-port-number-really-work-in-tcp/29045432#29045432) | |
22 |