From aa59aba51dd3d15437b539153345a1d39d6a4d2a Mon Sep 17 00:00:00 2001 From: Elena Date: Mon, 13 Feb 2023 18:02:17 +0100 Subject: [PATCH] =?UTF-8?q?A=C3=B1adido=20para=20especificar=20IP/puerto?= =?UTF-8?q?=20desde=20el=20que=20se=20conecta?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- str_socket.cpp | 20 ++++++++++++++++++-- str_socket.h | 2 +- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/str_socket.cpp b/str_socket.cpp index 448f524..9c36f11 100644 --- a/str_socket.cpp +++ b/str_socket.cpp @@ -427,10 +427,26 @@ void Cstr_socket_srv::pon_tout( int t_out ) } //********************************************************************************************************************************** //********************************************************************************************************************************** -extern "C" UTILES_EXPORT BOOL str_socket_conecta( Cstr_socket *soc, char *ip, int puerto ) +extern "C" UTILES_EXPORT BOOL str_socket_conecta(Cstr_socket * soc, char* ip, int puerto, char* ip_local) { AFX_MANAGE_STATE(AfxGetStaticModuleState()); - return soc->crear() && soc->conecta(ip, puerto); + BOOL b = TRUE; + int n = 1; + + + if (ip_local && ip_local[0] != 0) + { + do + { + b = soc->crear(ip_local, puerto + n); + n++; + } while (!b && n < 5); + if (!b) + int err = GetLastError(); + } + else + b = soc->crear(); + return b && soc->conecta(ip, puerto); } //********************************************************************************************************************************** extern "C" UTILES_EXPORT Cstr_socket * str_socket_crea() diff --git a/str_socket.h b/str_socket.h index 559f3fe..d541f30 100644 --- a/str_socket.h +++ b/str_socket.h @@ -79,7 +79,7 @@ public: }; //funciones de socket cliente para pinvoke----------------------------------------------------- extern "C" UTILES_EXPORT Cstr_socket *str_socket_crea(); -extern "C" UTILES_EXPORT BOOL str_socket_conecta(Cstr_socket *soc, char *ip, int puerto); +extern "C" UTILES_EXPORT BOOL str_socket_conecta(Cstr_socket *soc, char *ip, int puerto, char* ip_local=NULL); extern "C" UTILES_EXPORT BOOL str_socket_envia(Cstr_socket *soc, char *txt); extern "C" UTILES_EXPORT int str_socket_recive(Cstr_socket* soc); extern "C" UTILES_EXPORT void str_socket_dame_buf(Cstr_socket* soc, char* buf);