Create the first assignment: 'timeserver'
This commit is contained in:
parent
bc6a19ff33
commit
a54d88dc70
6 changed files with 92 additions and 0 deletions
20
timeserver/Makefile
Normal file
20
timeserver/Makefile
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
CC = gcc -Wall -std=c99 -pedantic
|
||||||
|
SOURCES = timeserver.c
|
||||||
|
OBJECTS = timeserver.o
|
||||||
|
|
||||||
|
all: timeserver
|
||||||
|
|
||||||
|
timeserver: $(OBJECTS)
|
||||||
|
$(CC) $(OBJECTS) -o timeserver
|
||||||
|
|
||||||
|
timeserver.o: timeserver.c
|
||||||
|
$(CC) -c timeserver.c -o timeserver.o
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f $(OBJECTS) timeserver timeserver.out
|
||||||
|
|
||||||
|
clean_objects:
|
||||||
|
rm -f $(OBJECTS)
|
||||||
|
|
||||||
|
run:
|
||||||
|
./timeserver
|
||||||
16
timeserver/README.md
Normal file
16
timeserver/README.md
Normal file
|
|
@ -0,0 +1,16 @@
|
||||||
|
# Running the timeserver
|
||||||
|
Use `make` to compile the timeserver.
|
||||||
|
Use `make run` to run the timeserver. This will run on an infinite loop.
|
||||||
|
Use `Ctrl+C` to stop the timeserver.
|
||||||
|
|
||||||
|
## timeserver communication
|
||||||
|
Communicating with the server can happen using netcat in UDP mode (-u flag).
|
||||||
|
|
||||||
|
## timeserver information
|
||||||
|
The timeserver runs on UDP port 8888.
|
||||||
|
The timeserver will wait for `time\r\n` to be sent on this port, and if received,
|
||||||
|
will send back a response of the time (in ms) since January 1st, 1970 (UNIX Epoch).
|
||||||
|
|
||||||
|
## pcap information
|
||||||
|
A demonstration of the timeserver has been captured with Wireshark in the
|
||||||
|
included `demo.pcap` file.
|
||||||
BIN
timeserver/timeserver
Executable file
BIN
timeserver/timeserver
Executable file
Binary file not shown.
33
timeserver/timeserver.c
Normal file
33
timeserver/timeserver.c
Normal file
|
|
@ -0,0 +1,33 @@
|
||||||
|
// header files
|
||||||
|
#include "timeserver.h"
|
||||||
|
|
||||||
|
// constants
|
||||||
|
// timeserver port is 8888
|
||||||
|
#define TIMEPORT "8888"
|
||||||
|
|
||||||
|
// prototypes
|
||||||
|
|
||||||
|
// main function
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
// initialize program (variables and structs)
|
||||||
|
// define a UDP socket
|
||||||
|
// bind the UDP socket to port 8888 / TIMEPORT
|
||||||
|
// while loop to see if the "time\r\n" has been received (recv call?)
|
||||||
|
// if "time\r\n" is received, then send() back the linux epoch.
|
||||||
|
// profit???
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
// function definitions
|
||||||
|
|
||||||
|
/*
|
||||||
|
Name: ???
|
||||||
|
Process: ???
|
||||||
|
Function Input/Parameters: ???
|
||||||
|
Function Output/Parameters: ???
|
||||||
|
Function Output/Returned: ???
|
||||||
|
Device Input/Device: ???
|
||||||
|
Device Output/Device: ???
|
||||||
|
Dependencies: ???
|
||||||
|
*/
|
||||||
23
timeserver/timeserver.h
Normal file
23
timeserver/timeserver.h
Normal file
|
|
@ -0,0 +1,23 @@
|
||||||
|
#ifndef TIMESERVER
|
||||||
|
#define TIMESERVER
|
||||||
|
|
||||||
|
// included libraries
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <math.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <sys/types.h>
|
||||||
|
#include <sys/socket.h>
|
||||||
|
#include <netdb.h>
|
||||||
|
#include <time.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <netinet/in.h>
|
||||||
|
#include <arpa/inet.h>
|
||||||
|
|
||||||
|
// data structures
|
||||||
|
|
||||||
|
// function prototypes
|
||||||
|
|
||||||
|
#endif // TIMESERVER
|
||||||
BIN
timeserver/timeserver.o
Normal file
BIN
timeserver/timeserver.o
Normal file
Binary file not shown.
Loading…
Add table
Add a link
Reference in a new issue