Bonjour,

je suis débutant en programmation, et lors de mes recherches dans mes dossiers de cours, j'ai decouvert un vieux code pour une application serveur UNIX !
Malheureusement non-commentée !!

Je pense que celle-ci pourrait résoudre une partie d'un projet sur lequel je travail aujourd'hui qui consiste à faire une application serveur VxWorks !!!

Les librairies se ressemblant entre Unix et Vxworks, et ne trouvant aucun code VxWorks sur le net, je me suis donc mis dans la tête de réaliser mon programme en utilisant des codes applicatifs Unix !! Est ce un bon choix ?

Ce code compile trés bien sous Tornado !!!!!

Je pense que des commentaires m'aideraient grandement à comprendre ce que je fais !!!

Car je reste dans le flou quand au fonctionnement reel de cette Application !!


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <signal.h>
#include <netdb.h>
#include <stdio.h>
#include <sys/stat.h>
#include <pthread.h>
 
 
struct sockaddr_in myaddr, peeraddr_in;
struct servent *sp;
pthread_t th1, th2;
int sock, socka, longueur;
char car;
 
void *write_sock()
{
	char car;
	pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
	do
	{
		car = getchar();
		send(socka, &car,1,0);
	}
	while(car != 0x1B);
	pthread_cancel(th1);
}
 
void *read_sock()
{
	char car;
	pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
	do
	{
		recv (socka, &car,1,0);
		if(car == 0x0D)
		{
			putchar(car);
			car = 0x0A;
		}
		else { putchar(car);}
	}
	while (car != 0x1B);
	pthread_cancel(th2);
}
 
int main ()
{
	myaddr.sin_family = AF_INET;
	myaddr.sin_addr.s_addr = INADDR_ANY;
	sp = getservbyname("xxxxx", "tcp");
	myaddr.sin_port = sp->s_port;
	sock = socket(myaddr.sin_family, SOCK_STREAM, 0);
	longueur = sizeof(struct sockaddr_in);
	bind(sock, (struct sockaddr*)&myaddr, longueur);
	listen(sock, 2);
	socka = acceptr(sock, (struct sockaddr*)&peeraddr_in, &longueur);
	pthread_create(&th1, NULL, read_sock, NULL);
	pthread_create(&th2, NULL, write_sock, NULL);
	pthread_join(th1, NULL);
	pthread_join(th2, NULL);
	shutdown(socka, 2);
	shutdown(sock, 2);
	return 0;
}
Merci