基於流式套接字的時間同步伺服器設計

2021-09-29 18:55:16 字數 3583 閱讀 6395

要求使用流式套接字程式設計,實現時間同步伺服器和客戶端,該伺服器能夠接收客戶端的查詢請求,獲取本地時間,並將結果傳送回客戶端,客戶端將該時間顯示出來。

執行環境為vs2017

#include

"pch.h"

#include

#include

#include

#pragma comment(lib,"ws2_32.lib")

//引入動態鏈結庫

#define maxline 4096

//最大緩衝區

#define sever_port 13131

//目標埠

#define sever_ip "127.0.0.1"

//本機ip

intmain()

if(lobyte

(wsa_data.wversion)!=2

||hibyte

(wsa_data.wversion)!=2

)//設定套接字的型別、目的ip、目的埠

sockaddr_in sever_addr;

memset

(&sever_addr,0,

sizeof

(sever_addr));

sever_addr.sin_family = af_inet;

sever_addr.sin_addr.s_un.s_addr =

inet_addr

(sever_ip)

; sever_addr.sin_port =

htons

(sever_port)

;//建立流式套接字

socket sock_conn =

socket

(af_inet, sock_stream,0)

;if(sock_conn == invalid_socket)

//傳送鏈結請求

res =

connect

(sock_conn,

(sockaddr*

)&sever_addr,

sizeof

(sever_addr));

if(res == socket_error)

//緩衝區清空

memset

(recv_data,0,

sizeof

(recv_data));

//資料傳送結束,呼叫shutdown()函式生命不再傳送資料,此時客戶端仍可以接收資料

res =

shutdown

(sock_conn, sd_send);if

(res == socket_error)

printf

("recv data is:");

//迴圈接收

doelse

else}}

while

(res >0)

;closesocket

(sock_conn)

;wsacleanup()

;system

("pause");

return0;

}

#include

"pch.h"

//vs中自帶的標頭檔案,其他編譯器可去掉

#include

#include

#include

#include

#include

#include

#pragma comment(lib,"ws2_32.lib")

//引入動態鏈結庫

#define maxline 4096

//接收緩衝區長度

#define listenq 1024

//監聽佇列的長度

#define sever_port 13131

//伺服器端口

intmain()

if(lobyte

(wsa_data.wversion)!=2

||hibyte

(wsa_data.wversion)!=2

)//設定位址

sockaddr_in sever_addr;

memset

(&sever_addr,0,

sizeof

(sever_addr));

sever_addr.sin_family = af_inet;

sever_addr.sin_addr.s_addr =

htonl

(inaddr_any)

;//轉為網路位元組序,32位

sever_addr.sin_port =

htons

(sever_port)

;//轉為網路位元組序,16位

//建立套接字

socket sock_listen =

socket

(af_inet, sock_stream,0)

;if(sock_listen == invalid_socket)

//繫結本機位址和埠號

res =

bind

(sock_listen,

(struct sockaddr*

)&sever_addr,

sizeof

(sever_addr));

if(res == socket_error)

//設定監聽套接字,最長佇列是listenq

res =

listen

(sock_listen, listenq);if

(res == socket_error)

//迴圈伺服器

while

(true

) ticks =

time

(nullptr);

time

(&ticks)

;memset

(buff,0,

sizeof

(buff));

//清空緩衝區

strcpy

(buff,

ctime

(&ticks));

printf

("now time is: %s"

, buff)

;//傳送資料

res =

send

(sock_conn, buff,

(int

)strlen

(buff),0

);if(res == socket_error)

printf

("send time data successfully!\n");

res =

shutdown

(sock_conn, sd_send);if

(res == socket_error)

closesocket

(sock_conn)

;printf

("server disconnect!\n");

}closesocket

(sock_listen)

;wsacleanup()

;return0;

}

流式套接字客戶端 伺服器程式設計

1 客戶端向伺服器發出日期請求字串,如 d y a t等 2 伺服器從網路接收到日期時間請求字串後,根據字串格式生成對應的日期時間值返回給客戶端 為了簡化程式美圖出套接字變成的關鍵內容,該例項略去了對請求字串進行合法的校驗的處理。伺服器端程式 include include include incl...

基於流式套接字的訊息收發

今天第一次寫部落格,不知學習python已經將近乙個半月了。經同學的推薦,於是想用部落格來記錄一點東西,也便於自己對於知識的梳理和總結。希望能在這裡結交到興趣相同的盆友,沒事可以交流交流程式設計思想!套接字 實現網路程式設計進行資料傳輸的一種技術手段。所謂流式套接字,是指以位元組流的方式進行資料傳輸...

伺服器時間同步

1.讓伺服器的時間同步,尋找乙個網路時間伺服器,比如一些國家的授時中心 微軟公司授時主機 美國 time.windows.com 台警大授時中心 台灣 asia.pool.ntp.org 新加坡授時中心 203.117.180.36 2.我們的電腦怎樣去同步授時中心的時間 ntpdate asia....