简单的UDP循环服务器:时间服务器

来源:互联网 发布:js获取元素css样式 编辑:程序博客网 时间:2024/05/22 21:44

服务端:

#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <time.h>#include <stdio.h>#include <string.h>#define BUFFLEN 1024#define SERVER_PORT 8888int main(int argc, char *argv[]){int s;struct sockaddr_in local, to;time_t now;char buff[BUFFLEN];int n = 0;int len = sizeof(to);s = socket(AF_INET, SOCK_DGRAM, 0);memset(&local, 0,  sizeof(local));local.sin_family = AF_INET;local.sin_addr.s_addr = htonl(INADDR_ANY);local.sin_port = htons(SERVER_PORT);int err = bind(s, (struct sockaddr*)&local, sizeof(local));while(1){memset(buff, 0, BUFFLEN);n = recvfrom(s, buff, BUFFLEN, 0, (struct sockaddr*)&to, &len);if (n >0 && !strncmp(buff, "TIME", 4)){memset(buff, 0, BUFFLEN);now = time(NULL);sprintf(buff, "%24s\r\n", ctime(&now));sendto(s, buff, strlen(buff), 0, (struct sockadrr*)&to, len);}}close(s);return 0;}

客户端:

#include <sys/types.h>#include <sys/socket.h>#include <time.h>#include <string.h>#include <stdio.h>#include <netinet/in.h>#define BUFFLEN 1024#define SERVER_PORT 8888int main(int argc, char *argv[]){int s;struct sockaddr_in server;time_t now;char buff[BUFFLEN];int n = 0;int len = 0;s = socket(AF_INET, SOCK_DGRAM, 0);memset(&server, 0, sizeof(server));server.sin_family = AF_INET;server.sin_addr.s_addr = htonl(INADDR_ANY);server.sin_port = htons(SERVER_PORT);memset(buff, 0, BUFFLEN);strcpy(buff, "TIME");sendto(s, buff, strlen(buff), 0, (struct sockadrr*)&server, sizeof(server));memset(buff, 0, BUFFLEN);len = sizeof(server);n = recvfrom(s, buff, BUFFLEN, 0,  (struct sockaddr*)&server, &len);if (n > 0){printf("TIME:%s\n", buff);}close(s);return 0;}


原创粉丝点击