簡述:
將一個葉節點加入一個 多點會晤,交換連線 數據,根據提供的流 描述確定所需的 服務質量。#include
SOCKET WSAAPI WSAJoinLeaf ( SOCKET s, const struct
sockaddr FAR * name, int namelen, LPWSABUF
lpCallerData, LPWSABUF lpCalleeData,
LPQOS lpSQOS, LPQOS lpGQOS, int iFlags );
s:標識一個多點套接口的描述字。
name:將與套接口連線的 遠端名字。
namelen:名字長度。
lpCallerData:一個指針,指向多點會晤創建時傳送給遠端的用戶數據。
lpCalleeData:一個指針,指向多點會晤 創建時從遠端傳送回來的用戶數據。
lpSQOS:一個指向套接口s的流描述的指針,每個方向一個。
lpGQOS:一個指向 套接口組(如果存在)流描述的指針。
iFlags:標誌位,用於指定套接口作為傳送者。接收者或身兼二者。
返回值:
若無錯誤發生,WSAJoinLeaf()返回新創建的多點套接口的描述字。否則的話,將返回INVALID_SOCKET錯誤,應用程式可通過WSAGetLastError()來獲取相應的錯誤代碼。錯誤代碼:
WSANOTINITIALISED 在調用本API之前應成功調用WSAStartup()。
WSAENETDOWN 網路子系統失效。
WSAEADDRINUSE 指定的地址已經在使用中。
WSAEINTR 通過 WSACancelBlockingCall()函式取消(阻塞)調用。
WSAEINPROGRESS 一個阻塞的WinSock調用正在進行中,或者服務提供者仍在處理一個回調函式
WSAEALREADY 在指定的套接口上正在運行一個非阻塞的WSAJoinLeaf()調用。
WSAEADDRNOTAVAIL 本地主機無法獲得指定的地址。
WSAEAFNOSUPPORT 所指定地址族中的地址無法與本套接口一起使用。
WSAECONNREFUSED 加入試圖被強制拒絕。
WSAEFAULT name或namelen參數不是用戶地址空間的一個有效部分;namelen參數太小;lpCalleeData、 lpSQOS和lpGQOS的緩衝區太小; lpCallerData緩衝區太大。
WSAEINVAL 套接口已與一個地址捆綁。
WSAEINVAL 套接口未與一個地址捆綁。
WSAEISCONN 套接口已是多點會晤的一個成員。
WSAENETUNREACH 當前無法從本主機聯繫網路。
WSAENOBUFS 無可用緩衝區空間。套接口無法加入。
WSAENOTSOCK 描述字不是一個套接口。
WSAEOPNOTSUPP lpSQOS和lpGQOS中所指定的流描述無法滿足。
WSAEPROTONOSUPPORT 服務提供者不支持lpCallerData參數。
WSAETIMEDOUT 加入試圖逾時,未建立多點會晤。
WSAEWOULDBLOCK 套接口被標誌為非阻塞,但多點會晤加入操作無法立即完成。當用select()選為讀連線後,可使用select()對套接口進行操作。
另請參閱: accept(), bind(), select(), WSAAccept(), WSAAsyncSelect(), WSAEventSelect(), WSASocket().