Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C: Socket-ongelma

tuuppi [15.06.2007 20:37:13]

#

kun yritän lähettää tekstiä clientiltä serverille vain osa tekstistä tulee perille .
Esim jos lähetän "tekstiä lisää tekstiä" palvelin vastaan ottaa tekstiä vain ensinmäiselle välilyönnille asti.
Mistä tämä mahtaisi johtua?

Deffi [16.06.2007 03:49:55]

#

Kaikka data varmaan tulee perille, mutta komentoriviohjelmassa cinillä saatu välilyöntimerkki on käsittääkseni sama kuin tekstistringin lopetusmerkki (nollatavu, '\0', 0x00, 0) ja tästä johtuu ettei loppu tekstistä tulostu.

Järkevää ratkaisua en heti keksi, mutta tietenkin vastaanotetun datan voisi lukea merkki kerralta kunnes se oikeesti loppuu.

Vai lienenköhän taas ihan väärässä.

sooda [16.06.2007 10:02:54]

#

Välilyönti kylläkin on ihan väli eikä nolla (' ', 32, 0x20), mutta muistaakseni streamit lukevat joskus hassusti vain tyhjään asti (väli, newline tms.) eli jos koodissa on esimerkiksi cin >> stringi; ja sille kirjoittaa yks kaks kol, niin stringi onkin sitten vain yks, se saattaisi liittyä tähän.

Resiina [16.06.2007 17:22:51]

#

Itse olen tehnyt tällaisen aliohjelman tähän tarkoitukseen:

string kysy()
{
       string teksti, osa;
       cin>>teksti;
       getline(cin, osa);
       teksti += osa;
       return teksti;
}

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta