There are several errors in this program, which are actually very simple errors. In a few days, I am sending them correctly.
Compile and run in linux.
Server:
# Include <sys/socket. h>
# Include <sys/types. h>
# Include <arpa/inet. h>
# Include <stdio. h>
# Include <stdlib. h>
# Include <string. h>
# Include <unistd. h>
# Deprecision MAX_LINE 256
Int main (int argc, char ** argv)
{
Int listenfd, connfd;
Struct sockaddr_in servadd;
Char buff [MAX_LINE];
Time_t ticks;
Listenfd = socket (AF_INET, SOCK_STREAM, 0 );
Bzero (& servadd, sizeof (servadd ));
Servadd. sin_family = AF_INET;
Servadd. sin_addr.s_addr = htonl (INADDR_ANY );
Servadd. sin_port = htons (13 );
Bind (listenfd, (struct sockaddr *) & servadd, sizeof (servadd ));
Listen (listenfd, 0 );
For (;
{
Connfd = accept (listenfd, (struct sockaddr *) NULL, NULL );
Ticks = time (NULL );
Snprintf (buff, sizeof (buff), "%. 24s \ r \ n", ctime (& ticks ));
Write (connfd, buff, strlen (buff ));
Close (connfd );
}
}
Client
# Include <sys/socket. h>
# Include <sys/types. h>
# Include <arpa/inet. h>
# Include <stdio. h>
# Include <stdlib. h>
# Include <string. h>
# Include <unistd. h>
# Define MAXLINE 256
Int main (int argc, char ** argv)
{
Int socketfd, n;
Char recvline [MAXLINE + 1];
Struct sockaddr_in servaddr;
If (argc! = 2)
{
Printf ("usage: a. out <IP address> \ n ");
Exit (-1 );
}
If (socketfd = socket (AF_INET, SOCK_STREAM, 0) <0)
{
Printf ("socket err \ n ");
Exit (-1 );
}
Bzero (& servaddr, sizeof (servaddr ));
Servaddr. sin_family = AF_INET;
Servaddr. sin_port = htons (13 );
If (inet_ton (AF_INET, argv [1], & servaddr. sin_addr) <= 0)
{
Printf ("inet_ton error for % s \ n", argv [1]);
Exit (-1 );
}
If (connect (socketfd, (struct sockaddr *) & servaddr, sizeof (servaddr) <0)
{
Printf ("connect error \ n ");
Exit (-1 );
}
While (n = read (socketfd, recvline, MAXLINE)> 0)
{
Recvline [n] = 0;
If (fputs (recvline, stdout) = EOF)
{
Printf ("fputs error \ n ");
Exit (-1 );
}
}
If (n <0)
{
Printf ("read error \ n ");
Exit (-1 );
}
Exit (0 );
}