linux下socket程式設計之時間伺服器

2021-06-04 17:54:55 字數 1815 閱讀 6117

為網路上的使用者提供時間服務,即為網路使用者返回伺服器的當前時間;

記錄發出請求的網路使用者的ip位址(儲存到檔案中);

編寫時間服務客戶端timeclient,該客戶端能夠向伺服器傳送時間服務請求,並把獲得的時間返回給使用者。

開發環境:fedora13,vim,gcc

timeserver.c檔案。

#include#include#include#include#include#include#include#include#include#include#define port 1234

#define backlog 5

int main()

int opt = so_reuseaddr;

setsockopt(listenfd, sol_socket, so_reuseaddr, &opt, sizeof(opt));

bzero(&server, sizeof(server));

server.sin_family = af_inet;

server.sin_port = htons(port);

server.sin_addr.s_addr = htonl(inaddr_any);

if(bind(listenfd, (struct sockaddr *)&server, sizeof(server)) == -1)

if(listen(listenfd, backlog) == -1)

addrlen = sizeof(client);

if((connectfd = accept(listenfd, (struct sockaddr *)&client, &addrlen )) == -1)

printf("timeclient's ip is %s. ",inet_ntoa(client.sin_addr));

printf("time is %s\n",ctime(&t));

send(connectfd,(time_t *)&t,sizeof(time_t),0);

fprintf(fd,"%s %s\n",inet_ntoa(client.sin_addr),ctime(&t));

fclose(fd);

return 1;

}

timeclient.c檔案

#include#include#include#include#include#include#include#include#define port 1234   /*listen port*/

int main ( int argc, char *argv)

/*get ip address*/

if((he = gethostbyname(argv[1])) == null)

if((sockfd = socket(af_inet, sock_stream, 0)) == -1)

bzero(&server, sizeof(server));

server.sin_family = af_inet;

server.sin_port = htons(port);

server.sin_addr = *((struct in_addr *)he->h_addr);

if(connect(sockfd, (struct sockaddr *)&server, sizeof(server)) == -1)

recv(sockfd,(void *)&t,sizeof(time_t),0);

printf("time is %s\n",ctime(&t));

}

執行結果:

Linux下socket程式設計之UDP

如下 udp client.c include include include include include include include static void usage char proc int main int argc,char argv int sock socket af ine...

linux網路程式設計之Socket

一.socket socket可看作是使用者程序與核心網路協議的程式設計介面.socket可用於本機程序間的通訊,也可用於網路上不同主機間的程序通訊.下圖顯示的是各種網路協議的位址格式 1.struct socketaddr 通用位址結構 通過獲取某種socketaddr結構體的首位址,不需要知道具...

Linux下socket程式設計之多程序TCP伺服器端

如下 tcp server.c include include include include include include include static void usage char proc ssize t startup char ip,char port struct sockaddr ...