BigZ1
Pomoću poll
ili select
treba ionako provjeravati je li neka od žrtvi odgovorila, pa sam u listu socketa koji se provjeravaju ubacio i C&C-ov i kad on nešto pošalje provjerim je li STOP i ako je, breakam iz slanja.
kolega_kolega
Ako simuliraš jedan od programa pomoću netcata, probaj s -I
smanjiti receive buffer ako simuliraš bota ili s -O
smanjiti send buffer ako simuliraš server.
Može biti da ti bot ostane čekati kraj poruke, iako je server već sve poslao. Za to mi se čini da ima nekoliko rješenja:
- bot ima timeout za čekanje payloada: čini mi se kao najbolje rješenje jer tako bot ne može ostati zauvijek u čekanju,
- bot čita ~1024 ili koliko već znakova odjednom, a server zatvara vezu čim sve pošalje: bot može zauvijek ostati čekati ako server ne zatvori svoj socket kad je gotov sa slanjem,
- bot čita znak po znak dok ne dođe do \n: bot može ostati zauvijek čekati ako server ne pošalje \n i ne zatvori konekciju, a ako neki od payloada sadrži \n će se izgubiti sve poslije njega.
Samo prvo rješenje s timeoutom mi se čini bulletproof jer bot ne može zapeti u čekanju payloada.
U svakom slučaju mi se čini korisno da server zatvori konekciju čim je poslao cijelu poruku. U prvom slučaju se izbjegne nepotrebno čekanje timeouta, a u ostala dva bot neće ostati čekati zauvijek.