共用方式為


作業的順序的 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 通訊端