2016-08-03 1 views
0

저는 일부 사용자의 도움을 받아 Indy 10을 Delphi 5로 옮겼습니다. I 30 초 같은 이내에 다시 게시하려고하지 않는Indy TIdHTTP.DoRequest를 대체 한 요소는 무엇입니까?

HTTP.Post(URL,ssSource,ssResult); 

잘 작동 : DoRequest 사용할 수없는 이상이기 때문에이 코드를 사용하려고하면 나는, 사용

HTTP.DoRequest(hmPost,URL,ssSource,ssResult);//This will not disconnect if already connected like the post

를 게시하는 데 사용 . 이 오류가 발생하는 경우 :

ERROR: Socket Error # 10048. Address already in use. 

DoRequest가이 문제를 일으키지 않았습니다. 올바르게 대체하는 방법을 모릅니다.

+1

'DoRequest()'가 여전히 존재합니다. 단순히'protected'입니다. 사용자 정의 HTTP 명령을 보내려고하지 않는 한 직접 호출 할 필요가 없습니다. 'Post()'연결이 끊어지지 않도록하려면,'hoOKeepOrigProtocol' 플래그가'HTTPOptions' 속성에서 활성화되어 있는지 확인하십시오. 소켓 오류에 관해서는 문제를 설명하는 [Minimal, Complete and Verifiable example] (http://stackoverflow.com/help/mcve)을 제공해주십시오. –

+0

내 로그를 살펴본 후에는 문제가 모든 게시가 스레드 내에서 완료되었다고 생각하며 최대 3 개의 스레드를 동시에 실행할 수 있습니다. 스레드 2와 3은 항상 소켓 오류 # 10048을 얻습니다. 스레드 # 1이 끝나면, 다음 게시물을 잘 처리합니다. 인디 9와 DoRequest(). –

+0

당신은 모든 스레드에서 같은'TIdHTTP' 객체를 사용하려고합니까? 아니면 각각 자신의'TIdHTTP' 객체를 가지고 있습니까? 'BoundIP' 및/또는'BoundPort' 속성을 사용하고 있습니까? –

답변

0

레미 르 보우, 감사드립니다. 나는 HTTP.BoundIP를 모두 삭제했으며 현재 소켓 오류가 발생하지 않았기 때문에 실제로 모든 3 개의 스레드가 이제는 자신의 스레드에서 동시에 실행 중임을 의미합니다. 감사합니다.

관련 문제