Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Socket Error (https://www.clubdelphi.com/foros/showthread.php?t=95266)

newtron 02-07-2021 17:05:03

Socket Error
 
Hola a tod@s.

Tengo una aplicación que se conecta a un cajón monedero automático enviando/recibiendo mensajes por sockets. Lo que hago es configurar las siguientes propiedades del socket:
Código Delphi [-]
ClientSocket1.Port:=31001;
ClientSocket1.ClientType := ctBlocking;
ClientSocket1.Active := True;
y luego hago
Código Delphi [-]
DlgPropiedades.ClientSocket1.Socket.SendText('......');
dependiendo de lo que quiera hacer, inicializar, cobrar, etc. y me devuelve una cadena en ClientSocket1.Socket.ReceiveText

El tema es que de de golpe y porrazo estoy recibiendo el siguiente error:

Windows socket error: Se ha forzado la interrupción de una conexión existente por el host remoto (10054), on API 'recv'

¿Alguien me puede dar luz de cual puede ser el problema?

¿La propiedad "ClientSocket1.ClientType := ctBlocking" qué significa? ¿puede ser que haya que configurarlo como ctNonBlocking?

Gracias y un saludo

Casimiro Noteví 02-07-2021 19:24:42

No se debe usar ClientSocket1.Active := True; cuando se está usando ClientType := ctBlocking;
Eso es al menos lo que me comentó alguien que sabía del tema.
Ejemplo:
Código Delphi [-]
var
  cs1: TClientSocket;
begin
  cs1 := TClientSocket.Create(nil);
  try
    cs1.ClientType := ctBlocking;
    cs1.Address := '127.0.0.1';
    cs1.Port := 8890;
    // //  cs1.Active:=true;   ¡¡¡ No usar con ctBlocking !!!
    cs1.Open;
    // enviar petición
    cs1.Socket.SendText(cCad);      // enviar petición

newtron 03-07-2021 11:19:00

Antonio.


Ok, probaré haciendo un open.


Gracias y un saludo


La franja horaria es GMT +2. Ahora son las 21:17:01.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi