Communication entre serveur.c et un client.py sur Raspberry pi 3+
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:
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:
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é.