Bonjour,
Je suis en train d'essayer de programmer un serveur et un client en mode UDP mais perror me renvoi juste apres sendto() et rcvfrom() : Illegal Seek...
Malheuresement je n'arrive pas a voir d'ou vient le problème.
Voici mes deux codes :
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 #include <netinet/in.h> #include <sys/types.h> #include <sys/socket.h> #include <netdb.h> #include <string.h> #include <stdio.h> #include <errno.h> #define PORT_A 2110 int main() { struct sockaddr_in adr_client; struct hostent *host; int len_adr_client; int desc; int i; char buffer[4]; char *localhost="localhost"; if((desc = socket(AF_INET, SOCK_DGRAM, 0))<0) perror("Socket"); adr_client.sin_family = AF_INET; if((host = gethostbyname(localhost)) == NULL) perror("Gethostbyname"); (void) bcopy( (char *)(*host).h_addr, (char *) &adr_client.sin_addr, (*host).h_length ); adr_client.sin_port = htons(PORT_A); len_adr_client = sizeof(adr_client); printf("Numéro de port = %i\n", PORT_A); for(i=0;i<5;i++) { sprintf(buffer, "%i", i); if((sendto(desc, buffer, strlen(buffer)+1, 0, (struct sockaddr *)&adr_client, len_adr_client))<0); perror("SendTo"); printf("Truc envoyé\n"); fflush(stdout); } return 0; }Merci d'avance.
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 #include <sys/types.h> #include <sys/socket.h> #include <sys/uio.h> #include <netinet/in.h> #include <stdio.h> #define PORT_A 2110 int main() { int i; int sock_rdv; int sock_service; int len_adr_client; int len_adr_serveur; int end; struct sockaddr_in adr_machine; struct sockaddr_in adr_client; char buffer[256]; if((sock_rdv = socket(AF_INET, SOCK_DGRAM, 0))<0) perror("Socket"); adr_machine.sin_port = htons(PORT_A); adr_machine.sin_addr.s_addr = INADDR_ANY; adr_machine.sin_family = AF_INET; printf("Numéro de port = %i\n", PORT_A); fflush(stdout); len_adr_serveur = sizeof(adr_machine); if((bind(sock_rdv, (struct sockaddr *)&adr_machine, len_adr_serveur))<0) perror("Bind"); len_adr_client = sizeof(adr_client); while(1) { if((end=recvfrom(sock_rdv, buffer, strlen(buffer)+1, 0, (struct sockaddr *)&adr_machine, &len_adr_serveur))<0); perror("RecvFrom"); buffer[end] = '\0'; printf("Texte recu : %s\n",buffer); fflush(stdout); } return 0; }![]()
Partager