meta data for this page
This is an old revision of the document!
Network programming @ Noppa | @ wiki - Updated: — julaakko 2009/09/29 15:22
Generic instructions and requirements
- INDIVIDUAL WORK – NO COPYING – NO GROUPWORK (discuss but do not share code)
- Except Assignment 1 - see the assignment description.
- Use C-language and GCC compiler
- Eliminate warning-messages (use
-Wall
forgcc
) Follow ANSI standard (C89/90 =-ansi
, C99 =-std=c99
forgcc
)
Since some new network address structures and functions aren't yet added to ANSI standard, this requirement is removed.
- Program can be run in Linux (on computers in classroom 6325)
- Do not use external libraries (use only system libraries)
- Use iterative approach (no threads unless requested)
- Use a make file (see man make or use a Makefile template)
- Compile: make build
- Clean: make clean
- Comment and document your code
- Comments directly to source code files
- Add name, student number and email into beginning of EVERY file.
- Use good structure for your code
- Divide code to functions based on responsibilities.
- Divide functions to different files based on responsibilities.
- C-code in .c files and header descriptions in .h files.
- ONE MAIN FUNCTION IS NOT GOOD STRUCTURING OF CODE !
- !!!!!!! NO GOTO !!!!!!! People it is the year 2009, we're not anymore living in the 80s!
- Write a readme file, which contains:
- How to run the program. Follow the given instructions on every assignment
- Description of the task (what has been done, what references used)
- Features that were implemented
- Description of division of code to separate files
- Own ides (text) or solutions (code) for improving the task
- Own improvements must clearly be a new feature, i.e. separate feature that enhances functionalities of the application.
- Must be documented! No documentation about own feature(s) → no additional points
- Check for error conditions
- Debug with GDB (see man gdb)
- Check that there are no memory leaks (use Valgrind, see man valgrind)
- REMEMBER TO CLOSE SOCKETS
- Free what you have allocated
Using Multiple files
Files:
- main.c - main file, contains main() and run()-functions.
#include "main.h" int main(int argc, char *argv[]) { printf("Main"); run(argc); return 0; } void run(int _type) { check(_type); }
- main.h - header for main.c, contains prototype for
run()
-function.
#include <stdin.h> void run();
- file.c - additional file, contains implementation of check()-function.
#include "file.h" int check(int _type) { if(_type == RIGHT) return 1; else return -1; }
- file.h - header for file.c, contains prototype for
check()
-function.
#define RIGHT 0 int check(int);
To use the function defined in file.h and implemented in file.c in the main.c following steps are needed:
- Include the file.h in main.c
#include "file.h"
- After this the compiler and linker can find the function
check()
used inrun()
since it is defined in one of the headers included.
- Add file.c into the Makefile of the application as source (remember to separate multiple files with spaces), in this case
SOURCES=main.c file.c