Ktoś miał już doświadczenie w tworzeniu własnego protokołu komunikacji sieciowej?
Nie mam tu na myśli UDP czy TCP, ale samego protokołu, który działa w oparciu o TCP/IP np. protokół gg (głównie na nim się wzoruję).
Zastanawia mnie kilka spraw:
- czy TCP gwarantuje mi, że pakiet dotrze nieuszkodzony (zakładając, że odebrałem cały) czy lepiej w każdym umieszczać sumę kontrolną?
- TCP gwarantuje, że pakiety dotrą w prawidłowej kolejności tak?
- jak rozpoznajecie, jaki aktualnie pakiet odbieracie? Informujecie o tym za pomocą pakietu (info: typ + rozmiar nadchodzącego pakietu) poprzedzającego ten właściwy czy jakoś inaczej?
- jak wykryć, że połączenie zostało zerwane? recv() powinno zwrócić 0?
Sieć i całą resztę obsługuję w WinAPI + WinSock. Co prawda pod Delphi, ale w przypadku użycia samego WinAPI język nie ma większego znaczenia.
Wykorzystuję gniazda asynchorniczne (nie blokujące).