函式原型:BOOL
(PASCAL FAR *LPFN_CONNECTEX) (
IN SOCKET s,
IN const struct sockaddr FAR *name,
IN int namelen,
IN PVOID lpSendBuffer,
IN DWORD dwSendDataLength,
OUT LPDWORD lpdwBytesSent,
IN LPOVERLAPPED lpOverlapped
);
第1個參數是預先綁定的套接字。參數 name 表示將要連線到的遠程地址。而 namelen 參數則是這個套接字地址結構長度。lpSendBuffer 參數是一個可選指針,它指向建立連線之後將要傳送的存儲塊,而 dwSendDataLength 參數表示要傳送的位元組數。lpdwBytesSent 參數被更新之後用來指明,在建立連線之後如果操作立刻完成的話,成功傳送的位元組數。lpOverlapped 參數是和該操作關聯的 OVERLAPPED 結構。這個擴展函式只可以用重疊方式調用。
就像 AcceptEx 函式一樣,由於ConnectEx 是為執行而設計的,因此任何預先設定的套接字選項或屬性都不會自動拷貝到連線套接字。為了達到這一目的,在建立連線之後 ,應用程式必須在套接字上調用 SO_UPDATE_CONNECT_CONTEXT。另外,就像 AcceptEx 一樣,已被 TransmitFile、TransmitPackets或DisconnectEx 斷開及重新使用的套接字句柄可以用作 ConnectEx 的套接字參數。
關於 ConnectEx API 沒什麼難題,僅有的要求是,傳遞到 ConnectEx 的套接字必須預選使用一個Bind調用對之進行綁定。這裡也沒什麼特殊的標誌,只是有一個重疊版本的連線,在建立連線後可以選擇性地多傳送一個數據塊。