Написал на C программу: сервер который посылает клиентам
время на серверном компьютере. Привожу исходные коды.
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <time.h>
#include <strings.h>
#define portnum 1300
#define hostlen 256
#define oops(msg) {perror(msg);exit(1);}
int main(int ac,char *av[]) {
struct sockaddr_in saddr;
struct hostent *hp;
char hostname[hostlen];
int sock_id,sock_fd;
FILE *sock_fp;
char *ctime();
time_t thetime;
//-------------------------------------------------------------------------//
sock_id=socket(PF_INET,SOCK_STREAM,0);
if(sock_id==-1)
oops("socket");
exit(1);
bzero((void *)&saddr,sizeof(saddr));
gethostname(hostname,hostlen);
hp=gethostbyname(hostname);
bcopy((void *)hp->h_addr,(void *)&saddr.sin_addr,hp->h_length);
saddr.sin_port=htons(portnum);
saddr.sin_family=AF_INET;
if(bind(sock_id,(struct sockaddr *)&saddr,sizeof(saddr)) != 0)
oops("bind");
if(listen(sock_id,1) != 0)
oops("listen");
while(1){
// oops("acepting");
sock_fd=accept(sock_id,NULL,NULL);
// oops("Wow ! got a call\n");
if(sock_fd == -1)
oops("accept");
sock_fp=fdopen(sock_fd,"w");
if(sock_fd == NULL)
oops("fdopen");
thetime=time(NULL);
fprintf(sock_fp,"The time is..");
fprintf(sock_fp,"%s",ctime(&thetime));
fclose(sock_fp);
}
}
Писал и компилировал в emacs. При запуске emacs из консоли
появляется сообщение 'Warning: locale not supported
by C library, locale unchanged'.
Программа компилируется. Далее выполняю команды :
# ./a.out &
[1] 732
# 127.0.0.1 13000
Trying 127.0.0.1...
telnet: connect to address 127.0.0.1: Connection refused
telnet: Unable to connect to remote host
[1] + Exit 1 ./a.out
#
локальной сети нет.