Hej Jeppe
Jeg er super glad for din hjælp!
Vi kommer tættere på.
if-nil koden var lagt før connect. Efter connect kører den fejlfrit igennem:
Lidt redigeret.
Var
BufSize:integer;
Begin
If IdTelnet0.Connected=False then
IdTelnet0.Connect;
BufSize:=60000;
IdTelnet0.Socket.Binding.SetSockOpt(Id_SOL_SOCKET,Id_SO_RCVBUF,PChar(@BufSize),SizeOf(BufSize));
if IdTelnet0 = nil then
ShowMessage('Telnet komponentet er ikke allokeret')
else if IdTelnet0.Socket = nil then
ShowMessage('Telnet socket er ikke allokeret')
else if IdTelnet.Socket.Binding = nil then
ShowMessage('Telnet socket binding er ikke allokeret');
OK, det tyder så på at det var SetSockOpt. Men hvordan får jeg fat i GetSockOpt?
Hvorfor alt dette pilleri? Jeg har en telnet client der nogle gange bliver brugt på en satellit, mobil eller dårlig dial-up og de metoder er plaget af hyppigere udfald.
Det skulle gerne være sådan at SO_RCVBUF og SO_SNDBUF fra
http://msdn.microsoft.com/en-us/library/ms738544(VS.85).aspx er store nok til at håndtere de delays/congestions der kan opstå når forbindelsen er lidt gummi-agtig.
Det undere mig dog at IdTelnet.RecvBufferSize og ~SendBufferSize ikke er de samme som SO_RCVBUF og SO_SNDBUF - hvilket jeg tror i øjeblikket.
På et eller andet tidspunkt kan det også være at jeg skal pille ved nogle timing-parametre i TCP/IP socket'en.
Indlæg senest redigeret d. 22.07.2008 19:25 af Bruger #4912