Sdílet prostřednictvím


Windows Sockets: Proudové sokety

Tento článek popisuje streamové sokety, jeden ze dvou typů rozhraní Windows Socket, které jsou k dispozici. (Druhým typem je soket datagramu.)

Sokety streamu poskytují tok dat bez hranic záznamů: datový proud bajtů, který může být obousměrný (aplikace je plně duplexní: může přenášet i přijímat prostřednictvím soketu). Na datové proudy se lze spolehnout jako na zdroj sekvenčního a neduplicitního doručování dat. ("Sekvenčně" znamená, že pakety jsou doručovány v pořadí, v jakém byly odeslány. "Bez duplicity" znamená, že konkrétní paket obdržíte pouze jednou.) Příjem zpráv datových proudů je zaručen a datové proudy jsou vhodné pro zpracování velkého množství dat.

Vrstva síťového přenosu může rozdělit nebo seskupit data do paketů přiměřené velikosti. Třída CSocket se postará o balení a rozbalení za vás.

Datové proudy jsou založené na explicitních připojeních: soket A požaduje připojení k soketu B; soket B přijme nebo odmítne žádost o připojení.

Telefonní hovor poskytuje dobrou analogii pro stream. Za normálních okolností uslyší přijímající strana to, co říkáte v pořadí, v jakém ho říkáte, bez duplikace nebo ztráty. Sokety streamu jsou vhodné například pro implementace, jako je protokol FTP (File Transfer Protocol), který usnadňuje přenos ASCII nebo binárních souborů libovolné velikosti.

Sokety datových proudů jsou vhodnější než sokety datagramu, pokud musí být zaručeno doručení dat a kdy je velikost dat velká. Další informace o soketech streamu najdete ve specifikaci rozhraní Windows Sockets. Specifikace je k dispozici v sadě Windows SDK.

Použití soketů datových proudů může být lepší než aplikace navržené tak, aby používaly soket datagramu pro vysílání ke všem přijímajícím soketům v síti, protože

  • Model vysílání je vystaven problémům s přetížením sítě (nebo bouřemi).

  • Model klientského serveru, který byl následně přijat, je efektivnější.

  • Model datového proudu poskytuje spolehlivý přenos dat, zatímco model datagramu nikoliv.

  • Konečný model využívá schopnosti komunikovat mezi aplikacemi Unicode a ANSI socket, které třída CArchive přináší třídě CSocket.

    Poznámka:

    Pokud používáte třídu CSocket, musíte použít datový proud. Kontrolní výraz MFC selže, pokud zadáte typ soketu jako SOCK_DGRAM.

Viz také

Windows Sockets v prostředí MFC
Windows Sockets: Úvod