|
1 | | -# PlaneTalk |
2 | | -<p align="center"> |
3 | | -<img src="https://user-images.githubusercontent.com/6486741/76912323-62880880-68ab-11ea-938f-15b7519726db.gif"> |
4 | | -</p> |
| 1 | +<img src="https://user-images.githubusercontent.com/6486741/115228357-8f8b9800-a109-11eb-98ca-0bd4ada84b20.png" width=100> |
5 | 2 |
|
| 3 | +# PlaneTalk  |
6 | 4 |
|
7 | | -PlaneTalk is an iOS Swift App which lets you send messages to other devices connected to the same Wi-fi network. |
8 | | -It's suitable in places like airplanes where there is no internet connection. |
| 5 | +PlaneTalk is an iOS app written in Swift which lets you send messages to other devices connected to the same Wi-fi-Hotspot network. |
| 6 | +It's suitable in places where there is no internet connection like airplanes (hence the name PlaneTalk 😃). |
9 | 7 |
|
10 | 8 | The core functionalities are all built around some TCP and UDP's `syscall` and uses `kevent` as event notification system. |
11 | 9 | The UDP protocol is only being used for discovery's purposes whereas the TCP protocol is being used to connect and communicate with the server. |
12 | 10 |
|
| 11 | +## Preview |
| 12 | + |
| 13 | +| Sample 1 | Sample 2 | Sample 3 | |
| 14 | +| ------------- | ------------- | ------------- | |
| 15 | +| <img width=150 src="https://user-images.githubusercontent.com/6486741/115229482-04130680-a10b-11eb-8c1c-e373cf2e8603.png"> | <img width=150 src="https://user-images.githubusercontent.com/6486741/115229496-07a68d80-a10b-11eb-9c07-12645ebf09c6.PNG"> | <img width=150 src="https://user-images.githubusercontent.com/6486741/115229668-391f5900-a10b-11eb-9b77-3739fe9a8480.PNG"> | |
| 16 | + |
13 | 17 | ## How it works |
14 | | -When a device opens the app, it automatically sends an UDP Broadcast message to detect any other device in the network. |
15 | | -After sending the message, the device may |
16 | | -1) either receive another broadcast message sent from the server containing its IP |
17 | | -2) or it may not receive any message. |
18 | | - |
19 | | -In the 2) scenario, the device |
20 | | -- becomes the server of the communication system |
21 | | -- keeps the UDP Broadcast up in order to receive broadcast messages of any new device joining the network |
22 | | -- opens a TCP socket to receive connection's requests |
23 | | -- establish connections with the clients |
24 | | - |
25 | | -In the 1) scenario, the device then fetches the IP of the server and establish a connection with it. |
| 18 | +When a device launches the app, it can choose to become either the server or a client. |
| 19 | + |
| 20 | +The server is listening to UDP messages to detect clients in the network and opens a TCP socket to receive connection's requests. |
| 21 | +Clients instead, will broadcast UDP messages for discovery purposes. |
| 22 | +Once the server receives a discovery message, it broadcasts a discovery response message and then the client then connects to the server via TCP. |
| 23 | + |
26 | 24 |
|
27 | 25 | ## License |
28 | 26 |
|
|
0 commit comments