PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → [Socket] Redirection de socket
[Socket] Redirection de socket
Iniciado por feveilleau, 10,sep. 2020 15:16 - No hay respuesta
Publicado el 10,septiembre 2020 - 15:16
Bonjour,

Je souhaite créer une redirection de socket en continue. Je m'explique, aujourd'hui, j'ai une application A qui communique en socket vers un serveur A.

Soit Application A vers Serveur A.

Une application tierce entre les deux, qui à pour but de récupérer l'info de l'application A puis de renvoyer l'info vers le serveur A. ( J'espère être clair :/ )


Pour résumer :

- Aujourd'hui : Application A <=> Serveur A

Ce que je veux : Application A <=> Application B <=> Serveur A


Pour ce faire, je travail avec des Threads.

Ce que j'ai pour le moment :

1) Création d'une socket "Serveur", avec une attente de connexion
2) J'exécute mon Thread, avec comme paramètre( ma socketClient , mon serveur A ip et port)
ThreadExécute("ThreadClient"+idx, threadNormal, passPlat,maSocketS,IpMoteur,PortMoteur)
3) Je rentre dans ma fonction passPlat
QUAND EXCEPTIONEXCEPTION DANS
SI SocketConnecte("clientSocket"+idx, portM, ipM) = Faux ALORS
Erreur("Connexion impossible : " + ErreurInfo(errMessage))
SINON
//Keep_alive
ThreadMode( threadSectionCritique+threadMultiProcesseur)
// Process (ou thread) d'écoute des messages
// Ce traitement est exécuté en tâche de fond
SocketChangeModeTransmission(socketServeur, SocketMarqueurFin, CRLF)
bConnexionActif = Vrai
ThreadExecute("ThreadServeur"+nbConnexion, threadNormal, Transmission,socketServeur,"clientSocket"+idx)
ThreadExecute("ThreadClient"+nbConnexion, threadNormal, Transmission,"clientSocket"+idx,socketServeur)
Trace("Connexion TCP Expéditeur : ", IpServeur + ":" + PortServeur + " <*---*> " + IpMoteur + " : " + PortMoteur )
FIN
FAIRE
Erreur("Connexion impossible " +bConnexionActif)
SocketFerme("clientSocket"+idx)
bConnexionActif=Faux
RETOUR
FIN

4)
PROCEDURE INTERNE Transmission(socketEntree,SocketSortie)
monBuffer est un Buffer = 8192
msgRecu est une chaîne
// TANTQUE SocketExiste(socketEntree)
TANTQUE Vrai
SI SocketChangeModeTransmission(socketEntree, SocketMarqueurFin, CRLF) = Faux ALORS
RENVOYER Faux
SINON
msgRecu = SocketLit(socketEntree,Faux,3000)
SI msgRecu <> "" ALORS
SI SocketLit(socketEntree,Faux,3000)=-1 ALORS
SORTIR
SINON
SI SocketEcrit(SocketSortie,msgRecu) = Vrai ALORS
Trace(" Message envoyé : " + msgRecu)
FIN
FIN
FIN
FIN
FIN
FIN


J'ai une erreur sur la ligne : msgRecu = SocketLit(socketEntree,Faux,3000) => connexion réinitialisée par l'autre partie (WSAECONNRESET )