Winsock API 函數大全 1 

來源:互聯網
上載者:User

文檔標題:Winsock API 函數大全 1  作者: 佚名

關 鍵 字:Socket,API,WinSOCK

本文轉自 C++Builder 研究 - http://www.ccrun.com/article/go.asp?i=186&d=353200
本系統(WinKing)提供之 Windows Sockets API 介面乃是依照 1993年1月20日公布之 WINSOCK 第1.1版(如附錄)中所定義之函式 (routine); 包括了30個Berkeley Software Distribution (BSD) 的函式以及16個符合 Windows Message-driven 特性的函式。

BSD 函式包括:
accept() bind() closesocket() connect()
getpeername() getsockname() getsockopt() htonl()
htons() inet_addr() inet_ntoa() ioctlsocket()
listen() ntohl() ntohs() recv()
recvfrom() select() send() sendto()
setsockopt() shutdown() socket() gethostname()
gethostbyaddr() gethostbyname()
getprotobyname() getprotobynumber()
getservbyname() getservbyport()

Microsoft Windows-specific Extensions 函式包括:
WSAAsyncGetHostByAddr() WSAAsyncGetHostByName()
WSAAsyncGetProtoByName() WSAAsyncGetProtoByNumber()
WSAAsyncGetServByName() WSAAsyncGetServByPort()
WSAAsyncSelect() WSACancelAsyncRequest()
WSACancelBlockingCall() WSACleanup()
WSAGetLastError() WSAIsBlocking()
WSASetBlockingHook() WSASetLastError()
WSAStartup() WSAUnhookBlockingHook()

這些 API 介面適用於 Internet Protocol Suite (IPS,通常稱之為 TCP/IP),
支援 Stream (TCP) 及 Datagram (UDP) Socket。

Stream (TCP) Socket 提供「雙向」、「可靠」、「有次序」、「不重覆」之資料傳送。
Datagram (UDP) Socket 則提供「雙向」之溝通,但沒有「可靠」、「有次序」、「不重覆」等之保證; 所以使用者可能會收到無次序、重覆之資料,甚至資料在傳輸過程中也可能會遺漏。

[Blocking 與 Non-blocking 模式]

Blocking 模式:使用者呼叫此一模式之函式時,會進入此函式之內部,直到條件或資料完全符合時再回到呼叫點。

Non-blocking 模式:使用者呼叫此一模式之函式時,進入此函式之內部,依當時之條件或資料做適當之回覆,並不會停留在函式之內部到條件或資料完全符合後才回應。

使用者必需注意的是,WINSOCK 定義之 Blocking 模式與一般 Unix 的不太相同。WINSOCK定義允許應用程式在呼叫 Blocking 函式的同時,依舊能夠處理其它訊息 (Messages),包括Keyboard 及 Mouse 的事件;但是此時應用程式除了能用 WSACancelBlockingCall() 函式來取消原先之 locking 動作或用WSAIsBlocking() 函式來檢查目前是否有 Blocking 動作仍在進行外,不可以」在原先呼叫之Blocking 函式完成前再呼叫其它的 Socket 函式,不然後者會失敗且產生WSAINPROGRESS 的錯誤。

使用者呼叫 WSACancelBlockingCall()函式所取消的 Blocking 動作若不是accept() 或者 select()的話,那麽之後唯一可呼叫的 Socket 函式只有closesocket(),因為取消一個 Socket 的Blocking 動作會使其變成未定(Indeterminate) 狀態。

[Async (非同步) 模式]

使用者呼叫此一模式的函式時,並不會馬上得到要求的資料;而是當要求的動作完成後,系統再透過另一種方式來通知呼叫者。其好處是使用者不需等到答覆後才可以再做其它的動作或要求。
WINSOCK定義的 Async 模式是以「PostMessage」的方式告知使用者其要求已經完成;所以在呼叫此類函式時,必須告知 Windows Sockets DLL一些資訊,包括接受訊息的視窗 handle及訊息編號等。

[函式概說]

[BSD Socket 程式庫]

(1) accept():接受某一Socket的串連要求,以完成 Stream Socket 的串連。

格 式: SOCKET PASCAL FAR accept( SCOKET s,struct sockaddr FAR *addr,int FAR *addrlen );
參 數: s Socket的識別碼 addr 存放來串連的彼端的位址 addrlen addr的長度
傳回值: 成功 - 新的Socket識別碼 失敗 - INVALID_SOCKET (呼叫 WSAGetLastError() 可得知原因)
說明: Server 端之應用程式呼叫此一函式來接受 Client 端要求之Socket 串連動作;如果Server 端之 Socket 是為 Blocking 模式,且沒有人要求串連動作,那麽此一函式會Block 函式馬上回覆錯誤。accept() 函式的答覆值為一新的 Socket,此 Socket 不可再用來接受其它的串連要求;但是原先之 Socket 仍可接受其他人的串連要求。

(2) bind():指定 Socket 的 Local 位址 (Address)。
格 式: int PASCAL FAR bind( SOCKET s,const struct sockaddr FAR *name,int namelen );
參 數: s Socket的識別碼 name Socket的位址值,其格式為
       struct sockaddr
         {
         u_short sa_family;
         char sa_data[14];
         };
namelen name的長度
傳回值: 成功 - 0
         失敗 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)

說明: 此一函式是指定 Local 位址及 Port 給某一未定名之 Socket。 使用者若不在意位址或 Port 的值,那麽他可以設定位址為 INADDR_ANY,及Port 為 0;那麽Windows Sockets 會自動將其設定適當之位址及 Port(1024 到 5000之間的值),使用者可以在此 Socket 真正串連完成後,呼叫 getsockname() 來獲知其被設定的值。

(3) closesocket():關閉某一Socket。
格 式: int PASCAL FAR closesocket( SOCKET s );
參 數: s Socket 的識別碼
傳回值: 成功 - 0
失敗 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
說明: 此一函式是用來關閉某一 Socket。
若是使用者原先對要關閉之 Socket 設定 SO_DONTLINGER,則在呼叫此一函式後,會馬上回覆,但是此一 Sokcet 尚未傳送完畢的資料會繼續送完後才關閉。
若是使用者原先設定此 Socket 為 SO_LINGER,則有兩種情況:
   (a) Timeout 設為 0 的話,此一 Socket 馬上重新設定 (reset),未傳完或未收到的資料全部遺失。
   (b) Timeout 不為 0 的話,則會將資料送完,或是等到 Timeout 發生後才關閉。

(4) connect():要求串連某一Socket到指定的對方。
格 式: int PASCAL FAR connect( SOCKET s,const struct sockaddr FAR *name,int namelen );
參 數: s Socket 的識別碼
        name 此 Socket 想要串連的對方位址
        namelen name的長度
傳回值:成功 - 0
        失敗 - SOCKET_ERROR (呼叫WSAGetLastError()可得知原因)
說明: 此函式用來向對方要求建立串連。若是指定的對方位址為 0 的話,會傳回錯誤值。當串連建立完成後,使用者即可利用此一 Socket 來做傳送或接收資料之用了。

(5) getpeername():擷取已串連成功之 Socket 的對方位址。
格 式: int PASCAL FAR getpeername( SOCKET s,struct sockaddr FAR *name,int FAR *namelen );
參 數: s Socket 的識別碼
name 此 Socket 串連的對方位址
namelen name 的長度
傳回值: 成功 - 0
失敗 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
說明: 此函式可用來取得已串連成功的 Socket 的彼端之位址資料。

(6) getsockname():擷取 Socket 的 Local 位址資料。
格式: int PASCAL FAR getsockname( SOCKET s,struct sockaddr FAR *name,int FAR *namelen );
參數: s Socket 的識別碼
name 此 Socket 的 Local 位址
namelen name 的長度
傳回值: 成功 - 0
失敗 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
說明: 此函式是用來取得已設定位址或已串連之 Socket 的本端位址資料。若是此 Socket 被設定為 INADDR_ANY,則需等真正建立串連成功後才會傳回正確的位址。

(7) getsockopt():要求某一 Socket 目前狀態設定的資料。
格式: int PASCAL FAR getsockopt( SOCKET s,int level,int optname,char FAR *optval,int FAR *optlen );
參數: s= Socket的識別碼,level=選項設定的,level=optname 選項名稱,optval=選項的設定值,optlen=選項設定值的長度
傳回值: 成功 - 0
失敗 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
說明: 此函式用來擷取目前 Socket的某些狀態設定值。 WINSOCK 提供之 level 只有 SOL_SOCKET 及 IPPROTO_TCP optname則有以下 之選擇:(參見WINSOCK 第 29、30 頁之定義)
Value Type
-----------------------------------------------
SO_ACCEPTCONN BOOL
SO_BROADCAST BOOL
*SO_DEBUG BOOL
SO_DONTLINGER BOOL
*SO_DONTROUTE BOOL
*SO_ERROR int
*SO_KEEPALIVE BOOL
SO_LINGER struct linger FAR*
SO_OOBINLINE BOOL
*SO_RCVBUF int
SO_REUSEADDR BOOL
*SO_SNDBUF int
SO_TYPE int
TCP_NODELAY BOOL
(* 表示暫不提供此功能選項)

(8) htonl():將一 32 位元 u_long 的值由 host 的相片順序轉換成network 的相片順序。
格式: u_long PASCAL FAR htonl( u_long hostlong );
參數: hostlong 一個 32 位元 host 相片順序的數目
傳回值: 一個 32 位元 network 相片順序的數目
說明: 因為 network 的相片順序與 host 的相片順序可能不同,所以我們需要此一函式來做轉換。

(9) htons():將一 16 位元u_short 的值由 host 的相片順序轉換成network 的相片順序。
格 式: u_short PASCAL FAR htons( u_short hostshort );
參 數: hostshort 一個 16 位元 host 相片順序的數目
傳回值: 一個 16 位元 network 相片順序的數目
說明: 因為 network 的相片順序與 host 的相片順序可能不同,所以我們需要此一函式來做轉換。

(10) inet_addr():將字串格式的位址轉換成 32 位元 unsigned long 的格式。
格式: unsigned long PASCAL FAR inet_addr( const char FAR *cp );
參數: cp 一個代表位址的「點格式」(dotted) 字串
傳回值: 成功 - 一個代表 Internet 位址的 unsigned long
失敗 - INADDR_NONE
說明: 此函式將一「點格式」的位址字串轉換成適用之Intenet位址。
「點格式」字串可為以下四種方式之任一:
(i) a.b.c.d (ii) a.b.c (iii) a.b (iv) a  

文檔標題:Winsock API 函數大全 2  作者: 佚名

關 鍵 字:Socket,API,WinSOCK

本文轉自 C++Builder 研究 - http://www.ccrun.com/article/go.asp?i=187&d=12u0hg
本系統(WinKing)提供之 Windows Sockets API 介面乃是依照 1993年1月20日公布之 WINSOCK 第1.1版(如附錄)中所定義之函式 (routine); 包括了30個Berkeley Software Distribution (BSD) 的函式以及16個符合 Windows Message-driven 特性的函式。

(11) inet_ntoa():將一網路位址轉換成「點格式」字串。
格式: char FAR * PASCAL FAR inet_ntoa( struct in_addr in );
參數: in 一個代表 Internet 位址的結構
傳回值: 成功 - 一個代表位址的「點格式」(dotted) 字串
失敗 - NULL
說明: 此函式將一 Internet 位址轉換成「a.b.c.d」字串格式。

(12) ioctlsocket():控制 Socket 的模式。
格式: int PASCAL FAR ioctlsocket( SOCKET s, long cmd, u_long FAR *argP );
參數: s Socket 的識別碼,cmd 指令名稱,argP 指向 cmd 參數的指標
傳回值: 成功 - 0
失敗 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
說明: 此函式用來擷取或設定 Socket 的運作參數。其所提供的指令有:
FIONBIO -- 開關 non-blocking 模式
FIONREAD -- 自 Socket 一次可讀取的資料量
SIOCATMARK -- OOB 資料是否已被讀取完 (*暫不提供此功能)

(13) listen():設定 Socket 為監聽狀態,準備被串連。
格 式: int PASCAL FAR listen( SOCKET s, int backlog );
參 數: s Socket 的識別碼,backlog 未真正完成串連前(尚未呼叫 accept() 前)彼端的串連要求的最大個數
傳回值: 成功 - 0
失敗 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
說明: 使用者可利用此函式來設定 Socket 進入監聽狀態,並設定最多可有多少個在未真正完成串連前的彼端的串連要求。(目前最大值限制為 5, 最小值為1)

(14) ntohl():將一 32 位元 u_long 的值由 network 相片順序轉換成host 相片順序。
格式: u_long PASCAL FAR ntohl( u_long netlong );
參數: netlong 一個 32 位元 network 相片順序的數目
傳回值: 一個 32 位元 host 相片順序的數目
說明: 因為 network 的相片順序與 host 的相片順序可能不同,所以我們需要此一函式來做轉換。

(15) ntohs():將一 16 位元 u_short 的值由 network 相片順序轉換成host 相片順序。
格式: u_short PASCAL FAR ntohs( u_short netshort );
參數: netshort 一個 16 位元 network 相片順序的數目
傳回值: 一個 16 位元 host 相片順序的數目
說明: 因為 network 的相片順序與 host 的相片順序可能不同,所以我們需要此一函式來做轉換。

(16) recv():自 Socket 接收資料。
格式: int PASCAL FAR recv( SOCKET s,char FAR *buf,int len,int flags );
參數: s Socket 的識別碼,buf 存放接收到的資料的暫存區,len buf 的長度,flags 此函式被呼叫的方式
傳回值: 成功 - 接收到的資料長度 (若對方 Socket 已關閉,則為 0)
失敗 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
說明: 此函式用來自串連式的 Datagram Socket 或 Stream Socket接收資料。對 Stream Socket 言,我們可以接收到目前有效 (available)資料,但其數量不超過 len 的大小。若是此 Socket 設定 SO_OOBINLINE,且有 out-of-band 的資料未被讀取,那麽只有 out-of-band 的資料被取出。
對 Datagram Socket 言,只取出第一個 datagram;若是該 datagram 大於使用者提供的儲存空間,那麽只有該空間大小的資料被取出,多餘的資料將遺失,且回覆錯誤的訊息。 flags 的值可為 MSG_PEEK、MSG_OOB(*暫不提供此功能)的組合.

(17) recvfrom():讀取一個 Datagram,並儲存資料來源的位址。
格 式: int PASCAL FAR recvfrom( SOCKET s,char FAR *buf,int len,int flags,struct socketaddr FAR *from,int FAR *fromlen );
參 數: s Socket 的識別碼,buf 存放接收到的資料的暫存區,len buf 的長度,flags 此函式被呼叫的方式,from 資料來源的位址,fromlen from 的大小
傳回值: 成功 - 接收到的資料長度 (若對方 Socket 已關閉,則為 0)
失敗 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
說明: 此函式用來讀取資料並記錄資料來源的位址。對 Stream Socket 言,其作用與 recv() 相同,參數 from 及 fromlen 將不被用到。

(18) select():檢查一或多個 Sockets 是否處於可讀、可寫或錯誤的狀態。
格式: int PASCAL FAR select( int nfds,fd_set FAR *readfds,fd_set FAR *writefds,fd_set FAR *exceptfds,const struct timeval FAR *timeout );
參數: nfds 此參數在此並無作用,readfds 要被檢查是否可讀的 Sockets,writefds 要被檢查是否可寫的 Sockets,exceptfds 要被檢查是否有錯誤的 Sockets,timeout 此函式該等待的時間。若為 NULL 時,表示 blocking,此函式會等到有事件發生。
傳回值: 成功 - 合格 Sockets 總數 (若 Timeout 發生,則為 0)
失敗 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
說明: 使用者可利用此函式來檢查 Sockets 是否有資料可被讀取,或是有空間可以寫入,或是有錯誤發生。

(19) send():使用串連式的 Socket 傳送資料。
格式: int PASCAL FAR send( SOCKET s,const char FAR *buf,int len,int flags );
參數: s Socket 的識別碼,buf 存放要傳送的資料的暫存區,len buf 的長度,flags 此函式被呼叫的方式
傳回值: 成功 - 送出的資料長度
失敗 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
說明: 此函式適用於串連式的 Datagram 或 Stream Socket 來傳送資料。對 Datagram Socket 言,若是 datagram 的大小超過限制,則將不會送出任何資料,並會傳回錯誤值。若是傳送 (transport) 系統內之儲存空間不夠存放這些要傳送的資料,send() 將會被 block 住,除非該 Socket 被設定為 non-blocking 模式。使用者亦須注意 send()函式執行完成,並不表示資料已經成功地送抵對方了。 flags 的值可設為 MSG_DONTROUTE(*暫不提供此功能)及 MSG_OOB 的組合.

(20) sendto():將資料送到指定的目的地。
格式: int PASCAL FAR sendto( SOCKET s,const char FAR *buf,int len,int flags,const struct sockaddr FAR *to,int tolen );
參數: s Socket 的識別碼,buf 存放要傳送的資料的暫存區,len buf 的長度,flags 此函式被呼叫的方式,to 資料要送達的位址,tolen to 的大小
傳回值: 成功 - 送出的資料長度
失敗 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
說明: 此函式適用於 Datagram 或 Stream Socket 來傳送資料到指定的位址。對 Datagram Socket 言,若是 datagram 的大小超過限制,則將不會送出任何資料,並會傳回錯誤值。對 Stream Socket 言,其作用與 send() 相同;參數 to 及 tolen 在此並無作用。 若是傳送 (transport) 系統內之儲存空間不夠存放這些要傳送的資料,sendto() 將會被 block 住,除非該Socket 被設定為 non-blocking 模式。使用者亦須注意 sendto() 函式執行完成,並不表示資料已經成功地送抵對方了。 flags 的值可設為 MSG_DONTROUTE(*暫不提供此功能)及 MSG_OOB 的組合.

編輯日期:2002-11-01  閱讀次數:4654

文檔標題:Winsock API 函數大全 3  作者: 佚名

關 鍵 字:Socket,API,WinSOCK

本文轉自 C++Builder 研究 - http://www.ccrun.com/article/go.asp?i=188&d=s3lz2f
本系統(WinKing)提供之 Windows Sockets API 介面乃是依照 1993年1月20日公布之 WINSOCK 第1.1版(如附錄)中所定義之函式 (routine); 包括了30個Berkeley Software Distribution (BSD) 的函式以及16個符合 Windows Message-driven 特性的函式。

(21) setsockopt():設定 Socket 的狀態。
格式: int PASCAL FAR setsockopt( SOCKET s,int level,int optname,const char FAR *optval,int optlen );
參數: s Socket 的識別碼,level 選項設定的 level,optname 選項名稱,optval 選項的設定值,optlen 選項設定值的長度
傳回值: 成功 - 0
失敗 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
說明: 此函式用來設定 Socket 的一些選項,藉以更改其動作。
可更改的選項有: (參見WINSOCK第1.1版54頁)
Value Type
-----------------------------------------------
SO_BROADCAST BOOL
*SO_DEBUG BOOL
SO_DONTLINGER BOOL
*SO_DONTROUTE BOOL
*SO_KEEPALIVE BOOL
SO_LINGER struct linger FAR*
SO_OOBINLINE BOOL
*SO_RCVBUF int
SO_REUSEADDR BOOL
*SO_SNDBUF int
TCP_NODELAY BOOL

(22) shutdown():停止 Socket 接收/傳送的功能。
格式: int PASCAL FAR shutdown( SOCKET s, int how );
參數: s Socket 的識別碼,how 代表該停止那些動作的標幟
傳回值: 成功 - 0
失敗 - SOCKET_ERROR (呼叫 WSAGetLastError()可得知原因)
說明: 此函式用來停止 Socket 的後續接收或傳送的功能。
若 how 的值為 0,則不再接收資料。
若 how 的值為 1,則不再允許傳送資料。
若 how 的值為 2,則不再接收且不再傳送資料。
shutdown() 函式並沒有將 Socket 關閉,所以該 Socket 所佔用之資源必須在呼叫closesocket() 之後才會釋放。

(23) socket():建立Socket。
格式: SOCKET PASCAL FAR socket( int af,int type,int protocol );
參數: af 目前只提供 PF_INET(AF_INET),type Socket 的型態 (SOCK_STREAM、SOCK_DGRAM),protocol 通訊協定(如果使用者不指定則設為0)
傳回值: 成功 - Socket 的識別碼
失敗 - INVALID_SOCKET(呼叫 WSAGetLastError() 可得知原因)
說明: 此函式用來建立一 Socket,並為此 Socket 建立其所使用的資源。
Socket 的型態可為 Stream Socket 或 Datagram Socket。

(24) gethostbyaddr():利用某一 host 的位址來擷取該 host 的資料。
格式: struct hostent FAR * PASCAL FAR gethostbyaddr( const char FAR *addr, int len, int type );
參數: addr network 相片順序的位址,len addr 的長度,type PF_INET(AF_INET)
傳回值: 成功 - 指向 struct hostent 的指標
struct hostent
{
char FAR * h_name;
char FAR * FAR * h_aliases;
short h_addrtype;
short h_length;
char FAR * FAR * h_addr_list;
}
失敗 - NULL (呼叫 WSAGetLastError() 可得知原因)
說明: 此函式是利用位址來擷取 host的其他資料,如 host 的名稱、別名,位址的型態、長度等。

(25) gethostbyname():利用某一 host 的名稱來擷取該 host 的資料。
格式: struct hostent FAR * PASCAL FAR gethostbyname( const char FAR *name );
參數: name host 的名稱
傳回值: 成功 - 指向 struct hostent 的指標
struct hostent
{
char FAR * h_name;
char FAR * FAR * h_aliases;
short h_addrtype;
short h_length;
char FAR * FAR * h_addr_list;
}
失敗 - NULL (呼叫 WSAGetLastError() 可得知原因)
說明: 此函式是利用 host 名稱來擷取其他的資料,如 host 的位址、別名,位址的型態、長度等。

(26) gethostname():擷取目前使用者使用的 host 的名稱。
格式: int PASCAL FAR gethostname( char FAR *name, int namelen );
參數: name 用來存放 host 名稱的暫存區,namelen name 的大小
傳回值: 成功 - 0
失敗 - SOCKET_ERROR (呼叫 WSAGetLastError() 可得知原因)
說明: 此函式用來擷取 host 的名稱。

(27) getprotobyname():依照通訊協定 (protocol) 的名稱來擷取該通訊協定的其他資料。
格式: struct protoent FAR * PASCAL FAR getprotobyname( const char FAR *name );
參數: name 通訊協定名稱
傳回值: 成功 - 一指向 struct protoent 的指標
struct protoent
{
char FAR * p_name;
char FAR * FAR * p_aliases;
short p_proto;
}
失敗 - NULL (呼叫 WSAGetLastError() 可得知原因)
說明: 利用通訊協定的名稱來得知該通訊協定的別名、編號等資料。

(28) getprotobynumber():依照通訊協定的編號來擷取該通訊協定的其他資料。
格式: struct protoent FAR * PASCAL FAR getprotobynumber( int number );
參數: number 以 host 相片順序的通訊協定編號
傳回值: 成功 - 一指向 struct protoent 的指標
struct protoent
{
char FAR * p_name;
char FAR * FAR * p_aliases;
short p_proto;
}
失敗 - NULL (呼叫 WSAGetLastError() 可得知原因)
說明: 利用通訊協定的編號來得知該通訊協定的名稱、別名等資料。

(29) getservbyname():依照服務 (service) 名稱及通訊協定來擷取該服務的其他資料。
格式: struct servent * PASCAL FAR getservbyname( const char FAR *name, const char FAR *proto );
參數: name 服務名稱,proto 通訊協定名稱
傳回值: 成功 - 一指向 struct servent 的指標
struct servent
{
char FAR * s_name;
char FAR * FAR * s_aliases;
short s_port;
char FAR * s_proto;
}
失敗 - NULL (呼叫 WSAGetLastError() 可得知原因)
說明: 利用服務名稱及通訊協定來獲得該服務的別名、使用的port編號等。

(30) getservbyport():依照服務 (service) 的 port 編號及通訊協定來擷取該服務的其他資料。
格式: struct servent * PASCAL FAR getservbyport( int port, const char FAR *proto );
參數: port 服務的 port 編號,proto 通訊協定名稱,傳回值: 成功 - 一指向 struct servent 的指標
struct servent
{
char FAR * s_name;
char FAR * FAR * s_aliases;
short s_port;
char FAR * s_proto;
}
失敗 - NULL (呼叫 WSAGetLastError() 可得知原因)
說明: 利用 port 編號及通訊協定來獲得該服務的名稱、別名等。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.