Winsock API 函數大全

Winsock API 函數大全 1

文檔標題: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 編號及通訊協定來獲得該服務的名稱、別名等。

0

0

0

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章