#cpp #programowanie i może trochę #sieci
Mireczki, piszę program, który zawiera serwer na socketach. Do wysyłanych danych na początku często dodawane są zera - co może to powodować? Chcę wysłać:
'a' '#'
a wysyła się
'\0' 'a' '#' (ewentualnie dwa zera na początku)
metoda odpowiadająca za wysyłanie danych wygląda tak:
bool ClientSlot::send(string message)
{
if(write(clientSocketId, message.cstr(), message.length())<0)
{
return false;
}
else
return true;
}
sprawdzałem zawartość message.cstr() za pomocą gdb i jest taka jak powinna być.
Mireczki, piszę program, który zawiera serwer na socketach. Do wysyłanych danych na początku często dodawane są zera - co może to powodować? Chcę wysłać:
'a' '#'
a wysyła się
'\0' 'a' '#' (ewentualnie dwa zera na początku)
metoda odpowiadająca za wysyłanie danych wygląda tak:
bool ClientSlot::send(string message)
{
if(write(clientSocketId, message.cstr(), message.length())<0)
{
return false;
}
else
return true;
}
sprawdzałem zawartość message.cstr() za pomocą gdb i jest taka jak powinna być.
- Najlepsze
- Wszystkie komentarze







Nie znam się ani na socketach ani specjalnie na cpp, ale może błąd jest w kodzie który odbiera?
Sprawdzałeś co faktycznie jest wysyłane np. Wiresharkiem?
Komentarz usunięty przez autora
Idę spać.
Do odbioru używasz recv(...)? Tam nie ma znaku /0 na końcu.
Jak chcesz wyszukiwać w tym tekście, musisz go sobie sam dodać
Może program którym wysyłasz ci to dodaje? Albo odczujesz ten string do bufora *(buf+1), a wcześniej było tam /0?