socket socket( int af, int type, int protocol );
type,通常為sock_stream或sock_dgram
標頭檔案中定義的只有如下幾種標準型別:
#define sock_stream 1
#define sock_dgram 2
#define sock_raw 3
#define sock_rdm 4
#define sock_seqpacket 5
使用非如上定義的型別。
返回:-1。
錯誤:10044(在這個位址家族中不存在對指定的插槽型別的支援)
protocol,通常為0
type = sock_stream,protocol = 6
正常type = sock_stream,protocol = 7
返回:-1
錯誤號:10043(請求的協議還沒有在系統中配置,或者沒有它存在的跡象)
type = sock_dgram,protocol = 17
正常type = sock_dgram,protocol = 19
返回:-1
錯誤號:10043(請求的協議還沒有在系統中配置,或者沒有它存在的跡象)
結論socket暫時只支援af_inet協議族。
對非標準的套接字型別不支援。
協議號引數可以為0,則使用與套接字型別相應的協議號;否則,協議號引數必須與相應的套接字型別相同。
int bind( socket s, const struct sockaddr far* name, int namelen );
int listen(socket s, int backlog);
「windows套接字實現中最多隻允許伺服器同時監聽5個套接字。使用引數0,則系統將把該引數改為1,而使用超過5的值,系統將自動把該引數改為5。」設定引數值為0,有1個客戶機可同時與伺服器連線(在vista下有時有2個可以連線,有時有3個可以連線,-_0//)設定引數值為1,有1個客戶機可同時與伺服器連線設定引數值為10,有10個客戶機可同時與伺服器連線
socket accept( socket s, struct sockaddr far* addr, int far* addrlen );
int recv( socket s, char far* buf, int len, int flags );
對於伺服器,一般是ns = accept(s , &addr , &len) ;
int send( socket s, const char far* buf, int len, int flags );
int closesocket( socket s );
int connect( socket s, const struct sockaddr far* name, int namelen );
int recvfrom( socket s, char far* buf, int len, int flags, struct sockaddr far* from, int far* fromlen );
填寫from結構
向其中填入非對端使用的位址或埠。
正常接收,並且from內建對端位址資訊。
int sendto( socket s, const char far* buf, int len, int flags, const struct sockaddr far* to, int tolen );
常見的一些 Hash 函式
hash的主要原理就是把大範圍對映到小範圍 所以,你輸入的實際值的個數必須和小範圍相當或者比它更小。不然衝突就會很多。不同的應用對hash函式有著不同的要求 比如,用於加密的hash函式主要考慮它和單項函式的差距,而用於查詢的hash函式主要考慮它對映到小範圍的衝突率。下面介紹一些常用的用於查詢ha...
一些常見的移位函式
微控制器 crol 字元迴圈左移 cror 字元迴圈右移 irol 整數迴圈左移 iror 整數迴圈右移 lrol 長整數迴圈左移 lror 長整數迴圈右移一些暫存器置位 define gpioc crl unsigned int gpioc base 0x00 define rcc apb2enr...
常見的一些 Hash 函式
hash的主要原理就是把大範圍對映到小範圍 所以,你輸入的實際值的個數必須和小範圍相當或者比它更小。不然衝突就會很多。不同的應用對hash函式有著不同的要求 比如,用於加密的hash函式主要考慮它和單項函式的差距,而用於查詢的hash函式主要考慮它對映到小範圍的衝突率。下面介紹一些常用的用於查詢ha...