Sdílet prostřednictvím


Windows Sockets: Posloupnost operací

Tento článek ukazuje vedle sebe, posloupnost operací pro server socket a klient soket.Vzhledem k tomu, že do zásuvek pomocí CArchive objekty jsou nutně soketů proudu.

Sekvence operací pro komunikace soketů proudu

Až do okamžiku konstrukce CSocketFile objektu je následující posloupnost přesné (s několika rozdíly parametr) pro obě CAsyncSocket a CSocket.Od této chvíle sekvence je výhradně pro CSocket.Následující tabulka popisuje posloupnost operací pro nastavení komunikace mezi klientem a serverem.

Nastavení komunikace mezi serverem a klientem

Server

Klient

// construct a socket

CSocket sockSrvr;

// construct a socket

CSocket sockClient;

// create the SOCKET

sockSrvr.Create(nPort);1,2

// create the SOCKET

sockClient.Create( );2

// start listening

sockSrvr.Listen( );

 

 

// seek a connection

sockClient.Connect(strAddr, nPort);3,4

// construct a new, empty socket

CSocket sockRecv;

// accept connection

sockSrvr.Accept( sockRecv ); 5

 

// construct file object

CSocketFile file(&sockRecv);

// construct file object

CSocketFile file(&sockClient);

// construct an archive

CArchive arIn(&file,            CArchive::load);

-nebo-

CArchive arOut(&file,           CArchive::store);

– nebo obojí – 

// construct an archive

CArchive arIn(&file,            CArchive::load);

-nebo-

CArchive arOut(&file,           CArchive::store);

 – nebo obojí – 

// use the archive to pass data:

arIn >> dwValue;

-nebo-

arOut << dwValue;6

// use the archive to pass data:

arIn >> dwValue;

-nebo-

arOut << dwValue;6

1.Kde nPort je číslo portu.Viz Windows Sockets: porty a adresy soketu Další informace o portech.

2.Server musíte vždy určit port, takže klienti se mohou připojit.Vytvořit volání někdy také určuje adresu.Na straně klienta pomocí výchozí parametry, které vyzve knihovny MFC použití portu k dispozici.

3.Kde nPort je číslo portu a strAddr je adresa počítače nebo adresu Internet Protocol (IP).

4.Adresy počítačů lze provést několika způsoby: "ftp.microsoft.com", "microsoft.com".Adresy IP pomocí formuláře "tečkované číslo" "127.54.67.32".Připojit funkce zkontroluje, pokud je adresa tečkovaný číslo (i když jej nekontroluje ověřte číslo je platné počítače v síti).Není-li Připojit předpokládá název počítače jeden z formulářů.

5.Při volání přijmout na straně serveru předat odkaz na nový objekt.Je nutné nejprve vytvořit objekt, ale nevyžadují vytvořit pro něj.Mějte na paměti, že pokud tento objekt soketu zhasne oboru a ukončí připojení.MFC připojí nový objekt, který SOCKET zpracování.Můžete vytvořit soket zásobníku, jak je znázorněno nebo na haldě.

6.Archiv a soubor soketu jsou uzavřeny, pokud přesahují rozsah platnosti.Také volání destruktoru objektu soketu Zavřít členské funkce pro socket objekt při přechodu mimo z rozsahu nebo odstranění objektu.

Další poznámky o pořadí

Stream soket je posloupnost volání uvedené v předchozí tabulce.Datagram soketů, které jsou bez připojení, nevyžaduje CAsyncSocket::Connect, naslouchat, a přijmout volání (i když můžete volitelně použít Připojit).Místo toho při použití třídy CAsyncSocket, datagram sockets použití CAsyncSocket::SendTo a ReceiveFrom členské funkce. (Při použití Připojit s datagramový soket pomocí Odeslat a příjem.) Vzhledem k tomu, CArchive nefunguje s datagramy, nepoužívejte CSocket se do archivu, je-li soketu datagram.

CSocketFile nepodporuje všechny CFilejeho funkce; CFile členů, jako Seek, který žádný smysl pro socket komunikace, nejsou k dispozici.Z tohoto důvodu některé výchozí knihovny MFC Serialize funkcí nejsou kompatibilní s CSocketFile.To platí zejména o CEditView třídy.By se neměl pokoušet serializovat CEditView data prostřednictvím CArchive objekt připojen k CSocketFile objektu pomocí CEditView::SerializeRaw; použít CEditView::Serialize místo (není popsána).SerializeRaw funkce očekává objektu souboru, aby se funkce, jako například Seek, že CSocketFile nepodporuje.

Další informace naleznete v části:

Viz také

Referenční dokumentace

Třída CSocket

CAsyncSocket::Create

CAsyncSocket::Close

Koncepty

Windows sockets v prostředí MFC