7777色情网黄A片免费看蜜臀,JIZZYOU中国少妇高潮,国产精品无码免费专区午夜,游泳教练在水下狂c我,《密爱》床戏视频

設為首頁 | 加入收藏 | 中文 | English
 
產品搜索:
 
網站首頁     ZLIP介紹   SDK開發板   ZLIP功能  ZLWeb功能 串口服務器   版權信息     購買方法  友情鏈接
ZLIP功能  ZLIP function
 
 API接口  API Interface 您現在的位置→ZLIP功(gong)能  

API接(jie)口包括(kuo):ZLIP初始化函(han)數(shu)、ZLIP退(tui)出函(han)數(shu)、Socket接(jie)口函(han)數(shu)、其它API函(han)數(shu)等(deng)。    


ZLIP_Init

初始化ZLIP,在使用ZLIP前必須調用該函數。函數原形:

zl_bool ZLIP_Init(
struct zlip_addr_info DT_XDATA *addr_info
);


參數
    addr_info
        [in] 初始化所需的地址信息。
返回值:
    TRUE/ FALSE。表示初始化成功/不成功。在51系統上初始化都會成功。

ZLIP_Release

退出ZLIP,使用該函數停止ZLIP的運轉。函數原形:

void ZLIP_Release(
);


Socket接口

ZLIP實現了BSD socket的socket, sendto, recvfro, connect, bind, listen, accept, send, recv, closesocket, shutdown, getpeername, getsockname, htonl, htons, ntohl, ntohs, inet_addr,inet_ntoa,ioctlsocket,setsockopt, getsockopt,select共(gong)23個接口函數(shu)。

下面僅舉select函(han)數的API這一例子:

select

select函數用于獲取一個或多個socket的狀態,如果沒有任何一個指定的socket處于指定的狀態,則函數處于阻塞狀態,直到有一個socket處于指定的狀態后返回。

int select(
    int nfds,
    fd_set FAR *readfds,
    fd_set FAR *writefds,
    fd_set FAR *exceptfds,
    const struct timeval FAR *timeout
);

參數
    nfds
        [in] 該參數是為兼容linux socket而設計,這里不使用。
    readfds
        [in/out] readfds 指向fd_set類型的結構,每個fd_set結構體內含有多個套接字。Readfds中包含的套接字是要進行可
        讀性檢測的套接字。函數返回的時候Readfds中包含處于可讀狀態的套接字。NULL表示select不進行可讀性檢測。
    writefds
        [in/out] writefds中包含的套接字是要進行可寫性檢測的套接字。函數返回的時候writefds中包含處于可寫狀態的套
        接字。NULL表示select不進行可寫性檢測。
    exceptfds
        [in/out] exceptfds中包含的套接字是要進行異常檢測的套接字。函數返回的時候exceptfds中包含處于異常狀態的套
        接字。 NULL表示select不進行異常檢測。
    timeout
        [in] 最長等待時間,如果為NULL,則為永久等待,直到有一個socket符合指定的要求。timeout內容是不會在函數中修
        改的。如果timeout中的值為0,則相當于非阻塞方式的檢測。
 返(fan)回(hui)值: 返(fan)回(hui)所有準備好的(de)fd_set中的(de)socket的(de)個數總和,返(fan)回(hui)0表示(shi)等待超時。


描述

可讀性:可讀性是指如下情況:
(1) 如果該socket調用過listen(),可讀時表示有連接等待接受,可使用accpet 從該socket接受連接。使用select()進行accept檢測的參考例子如下:

zl_s32 s32tmp;
struct timeval t;
fd_set r;
struct sockaddr_in DT_XDATA dest_addr, dest_addr_get;
dest_addr_get.sin_addr = IPAddr;
dest_addr_get.sin_port = 1024;

/* readable when can accept */
s = socket(PF_INET, SOCK_STREAM, 0);
bind(s,&dest_addr_get, sizeof(struct sockaddr_in));
listen(s,5);
printf("\nwait for connection...");
FD_ZERO(&r);
FD_SET(s, &r);
t.tv_sec = 10;
t.tv_usec = 100;
if(select(0, &r, NULL, NULL, &t) != 0)
{
    if(FD_ISSET(s, &r))
    printf("\n is acceptable");
    s32tmp = sizeof(struct sockaddr_in);
    if((ss[0] = accept(s, &dest_addr, &s32tmp)) != SOCK_ERR)
    {
        printf("\naccept from %s, port %d", inet_ntoa(&dest_addr), dest_addr.sin_port);
    }
    else
    {
        FIND_ERROR;
    }
    }
    else
    {
        printf("no connection in %d s",t.tv_sec);
    }
socketclose(s);


(2) 當檢測到s可讀時,即使在阻塞模式下,s也可以調用recv()或recvfrom()而不阻塞。
(3) 當連接被closed、reset的時候也是可讀(du)的。為了和(2)進行區別可以通過調用recv來檢(jian)查(當可讀(du)時,用recv()或recvfrom()返回0表明是情況(3))。

可寫性:
(1) 表示調用connect后,連接已經建立,可以發送數據了,所以select可以用于非阻塞狀態的connect函數是否成功建立連接的檢測。
(2) 表(biao)示發送緩存(cun)還有(you)空余(yu)并且對方接收緩沖區(qu)不為0,可以發送數據。

異常:
當TCP發生connect()連接失敗、對方發送RST、對方中斷連接等錯誤是人為發生了異常。
當selcet返回的時候,readfds 、writefds 、exceptfds 中沒有準備好的fd將被刪除。關于fd_set有如下定義:
(1) FD_SETSIZE:這個宏定義表示fd_set中的socket的最大數量,例如64。
(2) FD_CLR(s, *set):從set中將s刪除。在使用fd_set之前應該先清空。
(3) FD_ISSET(s, *set):s是否存在于set中。
(4) FD_SET(s, *set):將s加入set中。
(5) FD_ZERO(*set):將set清空。

   
 
   滬ICP備11004689號   版權所有@上海卓嵐信息科技有限公司   Design by infoo.cn