Титла: Free Pascal blcksock synapse Публикувано от: runtime в Jul 19, 2013, 18:59 Здравейте,
Малко помощ ако някой може да помогне. правя си едно семпло echo сървърче и ползвам този Unit: http://nxpascal.googlecode.com/svn/trunk/src/nxNetwork.pas ($2) за да създам TTCPBlockSocket връзка с клиент/сървър, като сървъра искам да ми върне ехо ( като начало, а после да сметне нещо и да ми върне резултата на клиента ) обаче нещо удрям на камък. Принципно ако ги ползвам на localhost нещата вървят, но ако клиента ми е на друга машина не приема отговора от сървъра, освен ако не го пратя 5-6 пъти ( тогава приема отговора от сървъра ). Кода ми е семпъл: http://pastebin.com/DB2pXjky ($2) Би трябвало от процедурата procedure TTest.ServerData(sender: TConnection; data: {$IFDEF fpc}PByte{$ELSE}PByteArray{$ENDIF}; size,ID: integer); при пристигане на някакви данни от клиента да ги върне с TTCPServer(server).SendString(-1,'blqblq'); Ама нъцки. Връща само ако киент/сървъра са на една машина или ако пратя от клиента данните 5-6 пъти ( няма определен брой ). Просто не се изпълнява TTCPServer(server).SendString(-1,'blqblq'); ако се помещава в процедурата TTest.ServerData Също така данните се пращат ако ги извикам след Begin-a с ReadLn или if keypressed. Ако са в процедурата по-горе няма връщане :) [_]3 Аз поне си мисля, че проблема е в това, че сокета се опитва да прати данни докато приема и не успява. Чудя се ако отговора го пусна в отделна нишка, която да се изпълни след получаване на данните дали няма да стане номера, но не знам само защо това чудо работи ако клиента и сървъра са на една машина. Титла: Re: Free Pascal blcksock synapse Публикувано от: runtime в Jul 19, 2013, 22:27 Всъщност се оправих!
Проблема беше, че в унита таймаута беше твърде нисък. След малка корекция всичко е Ок [_]3 |