獲取客戶端時間程式

2021-08-08 11:25:48 字數 2534 閱讀 5617

bzero : 初始化資料為0

例:#include

#include

void main()

輸出結果:

1:wwwww

2:           

socket函式原型:

int socket(int domain, int type, int protocol);

1.domain:即協議域,又稱為協議族(family):

常用的協議族有,af_inet、af_inet6、af_local(或稱af_unix,unix域socket)。

用來區分是建立ipv4的套接字(af_inet)還是ipv6的套接字(af_inet6)。

2.type:指定socket型別:

常用的socket型別有,sock_stream、sock_dgram、sock_raw、sock_packet、sock_seqpacket等。

1.sock_stream 這個協議是按照順序的、可靠的、資料完整的基於位元組流的連線。這是乙個使用最多的socket型別,這個socket是使用tcp來進行傳輸。

2.sock_dgram 這個協議是無連線的、固定長度的傳輸呼叫。該協議是不可靠的,使用udp來進行它的連線。

3.sock_raw 這個socket型別提供單一的網路訪問,這個socket型別使用icmp公共協議。(ping、traceroute使用該協議)

3.protocol:公共協議;

常用的公共協議有,ipproto_tcp、ipptoto_udp、ipproto_sctp、ipproto_tipc等,它們分別對應tcp傳輸協議、udp傳輸協議、stcp傳輸協議、tipc傳輸協議。

注意:上面的type和protocol不是可以隨意組合的,如sock_stream不可以跟ipproto_udp組合。當protocol為0時,會自動選擇type型別對應的預設協議。

htons函式原型:

uint16_t htons(uint16_t hostshort);   

在linux和windows網路程式設計時需要用到htons和htonl函式,用來將主機位元組順序轉換為網路位元組順序。

在intel機器下,執行以下程式

main(

)得到的結果是4096,初一看感覺很怪。

解釋如下,數字16的16進製表示為0x0010,數字4096的16進製表示為0x1000。 由於intel機器是小尾端,儲存數字16時實際順序為1000,儲存4096時實際順序為0010。因此在傳送網路包時為了報文中資料為0010,需要經過htons進行位元組轉換。如果用ibm等大尾端機器,則沒有這種位元組順序轉換,但為了程式的可移植性,也最好用這個函式。

另外用注意,數字所佔位數小於或等於乙個位元組(8 bits)時,不要用htons轉換。這是因為對於主機來說,大小尾端的最小單位為位元組(byte)。

inet_pton函式原型:

int inet_pton(int af, const char *src, void *dst);

inet_pton

:將「點分十進位制」 -> 「二進位制整數」

af = 

af_inet  或者 af = 

af_inet6

#include

#include

#include

#include

#include

int main(int argc,char**argv)

bzero(timebuff,sizeof(timebuff));

//建立socket

socket_fd=socket(af_inet,sock_stream,0);

if(socket_fd==-1)

seraddr.sin_family=af_inet;

seraddr.sin_port=htons(13);

if(inet_pton(af_inet,argv[1],&seraddr.sin_addr)<=0)

//連線伺服器

if((cn=connect(socket_fd,(struct sockaddr*)&seraddr,sizeof(seraddr)))<0)

while(read(socket_fd,timebuff,50));

printf("time:%s\n",timebuff);

return 0;

}#include

#include

#include

#include

#include

#include

int main(int argc,char**argv)

seraddr.sin_family=af_inet;

seraddr.sin_addr.s_addr=htonl(inaddr_any);

seraddr.sin_port=htons(13);

bind(socket_fd,(struct sockaddr*)&seraddr,sizeof(seraddr));

listen(socket_fd,10);

for(;;)

return 0;

}

批量獲取客戶端時間偏差

摘要 運維管理員往往需要定期檢視客戶端的時間同步情況,與ntp伺服器的時間偏差。奈何數量眾多,若不借助第三方工具是否有辦法批量獲取時間差呢?本文將介紹如何簡單使用命令解決問題。正文 1.在域內ntp伺服器上執行cmd,導航到p ec.exe路徑下,例如e 192.168.0.1 192.168.0....

獲取客戶端時間差

問題 試題頁面,通過獲取提交任務客戶端時間戳 試題顯示任務時間戳 使用者有效作業時間,對於使用者修改本機時間。會導致無效作業時間 new date gettime 獲取客戶端時間,毫秒級。使用者可以隨意更改方案1 通過jquery獲取服務端時間來計算差值 new date ajax getrespo...

獲取客戶端MAC

有時候我們需要獲取客戶端的一些資訊來做處理,獲取mac,如下 dllimport iphlpapi.dll private static extern int sendarp int32 dest,int32 host,ref int64 mac,ref int32 length dllimport...