2014-10-06 10 views
0

Lazarus와 함께 Synapse 라이브러리를 사용하고 있는데 두 개의 서로 다른 IP 주소간에 TCPBlockSocket 연결을 전환하려고합니다. 그때와 첫 번째 IP 주소에 연결Lazarus에서 Synapse를 사용하여 연결을 닫은 다음 다시 엽니 다.

mySocket:=TTCPBlockSocket.Create 

:

내가 가진 소켓 연결을 만들

mySocket.Connect(firstIPaddress,portNumber); 

내가 두 번째 IP 주소로 전환하려고하면이 잘 작동하지만,

mySocket.Connect(secondIPaddress,portNumber); 

mySocket.SendString()과 함께 보내는 데이터는 여전히으로 전송됩니다..

나는 .DestroymySocket을 보내고 그것을 다시하지만 mySocket가 할당되어있는 경우 내가 확인하고는 TCPBlockSocket 개체를 다시 전에 .Destory을 할 경우 (충돌을 얻을 시도 -.하지만 어쨌든 심각한 조금 보인다

인가 거기에 다른 IP 주소로 종료 TCPBlockSocket를 다시 연결?

그리고 거기있는 TCPBLockSocket 활성 및 작업 연결이 있는지 테스트 할 수있는 쉬운 방법을 다음 분리 할 수있는 올바른 방법을?

+0

내가 http://stackoverflow.com/questions/13045943/delphi를 살펴 했어 -

(내 의견에 따라, OP에 열린 연결이 계속 열려 있지만 작동하는지 확인 여전히 문제) 위의 두 번째 질문에 대해'-synapse-how-to-check-if-i-am-still-connected '가 아닌'(mySocket.Socket = INVALID_SOCKET) 또는 ((mySocket.WaitingData = 0) 및 mySocket.CanRead (0)) '좋은 연결을 가지고 있더라도 항상 false를 반환합니다 ... –

+0

추가 조사 후에 매번 false를 반환하고 호출이 false를 반환하도록하는'.CanRead (0) 연결은 양호하지만. –

답변

1

그것은이다 당신이 그것을 발견했을 때 분명 ...

.Connect 새 IP 주소와 포트를 호출하기 전에 mySocket.CloseSocket() 전화해야합니다.