作業的順序的 Windows 通訊端:

這份文件並排顯示,說明伺服程式通訊端和用戶端通訊端作業的順序。因為通訊端使用CArchive物件,它們一定是資料流通訊端

資料流通訊端通訊的作業順序

到建構的CSocketFile物件時,下列的順序是正確的 (有一些參數不同) 作為兩個CAsyncSocketCSocket。此後,順序是嚴格的CSocket。下表說明設定用戶端和伺服器之間的通訊作業的順序。

設定伺服器與用戶端之間的通訊

伺服器

用戶端

// 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);

-或-

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

– 或兩者 – 

// construct an archive

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

-或-

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

 – 或兩者 – 

// use the archive to pass data:

arIn >> dwValue;

-或-

arOut << dwValue;6

// use the archive to pass data:

arIn >> dwValue;

-或-

arOut << dwValue;6

1.其中nPort連接埠號碼。請參閱 Windows 通訊端: 連接埠和通訊端位址如需詳細資訊,有關連接埠。

2.讓用戶端可以連線,伺服器永遠必須指定一個連接埠。建立呼叫有時也會指定一個地址。在用戶端,使用預設參數,這會要求 MFC 使用任何可用的連接埠。

3.其中nPort連接埠號碼和 strAddr 為機器位址或網際網路通訊協定 (IP) 位址。

4.機器位址可以採用數種格式:"ftp.microsoft.com"、"microsoft.com"。IP 位址使用 「 點分隔數字 」 格式 「 127.54.67.32 」。連線函式會檢查位址是否為點分隔的數字 (雖然它不會檢查數字是否是正確的電腦在網路上)。如果不是, 連線假設的其中一個其他形式的電腦名稱。

5.當您呼叫接受在伺服器端,您可以將新的通訊端物件的參考。您必須首先,建構這個物件,但不是會呼叫建立它。請注意,如果這個通訊端物件超出範圍,連接會關閉。MFC 會連接至新的物件通訊端處理。您可以建構在堆疊上,如所示,或在堆積上的通訊端。

6.封存和通訊端檔就會關閉時,它們會執行而超出範圍。通訊端物件的解構函式也會呼叫關閉成員函式的通訊端物件,當物件超出範圍,或被刪除。

順序的相關的其他注意事項

上述表格中所顯示的呼叫順序是針對資料流通訊端。資料包通訊端,也就是沒有連線,不需要 CAsyncSocket::Connect接聽,以及 接受 的呼叫 (雖然您可以選擇性地使用 連線)。相反地,如果您使用的類別CAsyncSocket,資料包通訊端使用CAsyncSocket::SendToReceiveFrom成員函式。(如果您使用連線 資料包通訊端,您使用 傳送接收。)因為CArchive無法運作的資料包,請勿使用CSocket與封存資料包通訊端是否一起。

CSocketFile 不支援的所有CFile的功能。 CFile成員,例如Seek,其意義通訊端的通訊,都無法使用。因此,有些預設 MFC Serialize函式是不相容於CSocketFile。尤其是CEditView類別。您不應該嘗試序列化CEditView透過資料CArchive物件附加至CSocketFile物件使用CEditView::SerializeRaw。 使用 CEditView::Serialize 而 (並未記錄)。SerializeRaw 函式所預期的檔案物件,將函式,例如Seek、 該CSocketFile不支援。

如需詳細資訊,請參閱:

請參閱

參考

CSocket 類別

CAsyncSocket::Create

CAsyncSocket::Close

概念

在 MFC 中的 Windows 通訊端