服务端:
#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 8888
int 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 8888
int 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;
}