#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<strings.h>
#include<string.h>
#include<netinet/in.h>
#include<time.h>
#define LISENQ 1024
#define MAXLINE 4096
void str_cli(int sockfd)
{
char recvbuf[MAXLINE+1], sendbuf[MAXLINE];
int n;
time_t val;
struct tm *time1;
char buf[1024];
memset(buf, 0, 1024);
while((n = read(sockfd, recvbuf, MAXLINE)) > 0)
{
if(memcmp(recvbuf, "time", 4) == 0)
{
(void)time(&val);
time1 = localtime(&val);
sprintf(buf, "%d时", (*time1).tm_hour);
sprintf(buf+strlen(buf), "%d分", (*time1).tm_min);
sprintf(buf+strlen(buf), "%d秒", (*time1).tm_sec);
printf("%s\n", buf);
write(sockfd, buf, strlen(buf));
}
}
}
int main()
{
int listenfd, connfd;
struct sockaddr_in server_sockaddr, client_sockaddr;
socklen_t len;
if((listenfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
fprintf(stderr, "socket failed\n");
exit(EXIT_FAILURE);
}
else
printf("socket success\n");
bzero(&server_sockaddr, sizeof(server_sockaddr));
server_sockaddr.sin_family = AF_INET;
server_sockaddr.sin_port = htons(9877);
server_sockaddr.sin_addr.s_addr = htonl(INADDR_ANY);
if(bind(listenfd, (struct sockaddr*)&server_sockaddr, sizeof(server_sockaddr)) < 0)
{
fprintf(stderr, "bind failed\n");
exit(EXIT_FAILURE);
}
else
printf("bind success\n");
if(listen(listenfd, LISENQ) == -1)
{
fprintf(stderr, "listen failed\n");
exit(EXIT_FAILURE);
}
else
printf("listen success\n");
while(1)
{
len = sizeof(client_sockaddr);
connfd = accept(listenfd, (struct sockaddr*)&client_sockaddr, &len);
if(fork() == 0)
{
close(listenfd);
str_cli(connfd);
close(connfd);
exit(0);
}
close(connfd);
}
}
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<sys/socket.h>
#include<netinet/in.h>
#include<strings.h>
#include<arpa/inet.h>
#define MAXLINE 4096
int main(int argc, char **argv)
{
int sockfd, n;
struct sockaddr_in server_sockaddr;
char recvbuf[MAXLINE+1];
char commend[10];
if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
{
fprintf(stderr, "socket failed\n");
exit(EXIT_FAILURE);
}
else
fprintf(stderr,"socket success\n");
bzero(&server_sockaddr, sizeof(server_sockaddr));
server_sockaddr.sin_family = AF_INET;
server_sockaddr.sin_port = htons(9877);
inet_pton(AF_INET, argv[1], &server_sockaddr.sin_addr);
if(connect(sockfd, (struct sockaddr*)&server_sockaddr, sizeof(server_sockaddr)) == -1)
{
fprintf(stderr, "Connect failed\n");
exit(EXIT_FAILURE);
}
else
printf("Connect success\n");
while(fgets(commend, 10, stdin) != NULL)
{
if(memcmp(commend, "time", 4) == 0)
{
write(sockfd, "time", 4);
if((n = read(sockfd, recvbuf, MAXLINE)) > 0)
{
recvbuf[n] = 0;
fputs(recvbuf, stdout);
printf("\n");
}
else if(n == 0)
{
fprintf(stderr, "server no \n");
exit(EXIT_FAILURE);
}
else
{
printf("read failed\n");
continue;
}
}
}
exit(EXIT_FAILURE);
}