This program is an example of programming a TCP socket in C language, using the well-known client-server programming model.
The server side is multi-threaded, but the thread is optional since the developer/designer is still responsible for deciding if he/she needs it.
The library “commv6.c” develops all the functions to create, bind, listen, and remove a socket AF_INET, and the functions to send and receive messages (using the methods read and write). It supports: IPv4/IPv6 and SSL (see commSSL.c).
The structure of a message is defined in the file “msg.h”.
- Doxygen documentation
- Source code (gpl v2)
Code tested under debian-like and arch linux platform (thanks to nignux).
Questo programma è un esempio di programmazione di un socket TCP in linguaggio C, utilizzando il ben noto paradigma di programmazione client-server.
Il lato server è multi-threaded, ma è del tutto opzionale, e sarà responsabilità dello sviluppatore decidere se ne ha bisogno.
La libreria “commv6.c” sviluppa tutte le funzioni per creare, pubblicare, rimanere in ascolto e rimuovere una socket af_inet, e le funzioni per inviare e ricevere messaggi (usando i metodi read e write). Il codice supporta socket ipv4/ipv6 e SSL (commSSL.c)
La struttura di un messaggio è definita nel file “msg.h”.
- Documentazione doxygen
- Codice sorgente (gpl v2)
Codice testato sotto piattaforma debian-like e arch linux (ringraziamenti a nignux).
x86 | x64 | |
sizeof(char) | 1 | 1 |
sizeof(short) | 2 | 2 |
sizeof(float) | 4 | 4 |
sizeof(int) | 4 | 4 |
sizeof(unsigned int) | 4 | 4 |
sizeof(long) | 4 | 8 |
sizeof(double) | 8 | 8 |
sizeof(long unsigned int) | 4 | 8 |
sizeof(long double) | 12 | 16 |
sizeof(long int) | 4 | 8 |
x64
Linux 3.0.0-16-generic #28-Ubuntu SMP Fri Jan 27 17:44:39 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux
x32
Linux 2.6.18-6-k7 #1 SMP Thu Aug 20 22:36:26 UTC 2009 i686 GNU/Linux
Si consiglia di utilizzare:
sys/types.h
dove vengono dichiarati i tipi:
int8_t u_int8_t int16_t u_int16_t int32_t u_int32_t int64_t u_int64_t