要求使用流式套接字程式設計,實現時間同步伺服器和客戶端,該伺服器能夠接收客戶端的查詢請求,獲取本地時間,並將結果傳送回客戶端,客戶端將該時間顯示出來。
執行環境為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....