Bonjour à tous,
Je suis actuellement entrain de réaliser un programme qui me permettra par la suite de réaliser une communication entre un client et un serveur. Pour cela, je me suis appuyer du tutoriel suivant : https://python.developpez.com/cours/...=page_20#L20-A
Jusqu'à présent j'arrive à établir une connexion entre mon client et mon serveur mais je n'arrive pas à envoyer un message bidon depuis mon client.py et à le récupérer sur mon serveur.c .
J'aimerai que mon programme client.py envoie le message suivant : Hello ! à mon serveur.c
Donc j'ai utilisé les fonctions recv() et send() et j'ai initialisé un message de cette manière :
msgClient = input("C> HELLO")
mySocket.send(msgClient.encode("Utf8"))
Mais quand je lance mon programme client.py , j'ai un message comme quoi la connexion à été établie des deux côtés ce qui est tout à fait normal ... mais pas mon message (HELLO) côté serveur.
Voici mon code pour le SERVEUR :
Code c : 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
68
69
70
71
72
73
74
75 /* C socket server example */ #include<stdio.h> #include<string.h> //strlen #include<sys/socket.h> #include<arpa/inet.h> //inet_addr #include<unistd.h> //write int main(int argc , char *argv[]) { int socket_desc , client_sock , c , read_size; struct sockaddr_in server , client; char client_message[2000]; //Create socket socket_desc = socket(AF_INET , SOCK_STREAM , 0); if (socket_desc == -1) { printf("Could not create socket"); } puts("Socket created"); //Prepare the sockaddr_in structure server.sin_family = AF_INET; server.sin_addr.s_addr = inet_addr("127.0.0.1"); //on se met en local server.sin_port = htons( 6666 ); //on sélectionne le port //Bind if( bind(socket_desc,(struct sockaddr *)&server , sizeof(server)) < 0) { //print the error message perror("bind failed. Error"); return 1; } puts("bind done"); //Listen listen(socket_desc , 3); //Accept and incoming connection puts("Waiting for incoming connections..."); c = sizeof(struct sockaddr_in); //accept connection from an incoming client client_sock = accept(socket_desc, (struct sockaddr *)&client, (socklen_t*)&c); if (client_sock < 0) { perror("accept failed"); return 1; } puts("Connection accepted"); //Receive a message from client while( (read_size = recv(client_sock , client_message , 2000 , 0)) > 0 ) { //Send the message back to client write(client_sock , client_message , strlen(client_message)); } if(read_size == 0) { puts("Client disconnected"); fflush(stdout); } else if(read_size == -1) { perror("recv failed"); } return 0; }
et voici le code pour le CLIENT :
Code python : 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 #!/usr/bin/env python # -*- coding: utf8 -*- import RPi.GPIO as GPIO import MFRC522 import signal import socket, sys HOST = '127.0.0.1' PORT = 6666 # 1) création du socket : mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2) envoi d'une requête de connexion au serveur : try: mySocket.connect((HOST, PORT)) except socket.error: print("La connexion a échoué.") sys.exit() print("Connexion établie avec le serveur.") # 3) Dialogue avec le serveur : msgServeur = mySocket.recv(1024).decode("Utf8") while 1: if msgServeur.upper() == "FIN" or msgServeur =="": break print("S>", msgServeur) msgClient = input("C> HELLO") mySocket.send(msgClient.encode("Utf8")) msgServeur = mySocket.recv(1024).decode("Utf8") # 4) Fermeture de la connexion : print("Connexion interrompue.") mySocket.close()
Pouvez vous m'aider svp ? je suis bloqué.
Partager