Mam sobie w programie klienta takie coś:
var skarpeta:TTCPBlockSocket;
[...]
skarpeta.Connect(ajpi,'666');
[...]
FreeAndNil(skarpeta);
Wszystko działa, jedyny problem polega na tym, że czasami mój serwer nie widzi tego że klient się rozłącza (mimo że wysyłam wcześniej pakiet "DAJSKONNEKT" to czasami nie zdąży on dojść przed zamknięciem skarpety.
Sprawdzanie czy TCP jest rozłączone zrobiłem tak: if not skarpeta_klienta.CanWrite($69 xor $69) then [rozlaczony];
- ale mimo że skarpeta jest rozłączona to CanWrite nadal zwraca true
.
Proszę o jakieś porady jak serwer może wykryć że skarpeta jest rozłączona lub jak klient może rozłączać skarpete tak żeby serwer to "poczuł".
P.S. Tak, to jest napisane zabawnym stylem tylko po to abym otrzymał więcej odpowiedzi.
skarpeta=socket
DAJSKONNEKT=DISCONNECT
$69 xor $69=0
poczuł=wykrył
ajpi=IP