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é.