Q&A

  • 인디소켓에 관한 질문입니다. 좀 어려운데..아시는 분은 주저없이..-_-;;
쓰레드안에서 소켓의 연결을 시도하면 윈도우가 종료되면서 오류가 발생합니다..
혹시 이유를 하시는분 계신지요 ?

질문이 너무 막연하죠 ??? ^^*;; 예문을 하나...

procedure TForm1.A;
begin
   beginThread(ABC 쓰레드 생성)
end;

function ABC : integer;
begin
   Form1.TcpSocket.host := 호스트;
   Form1.TcpSocket.port := 포트
   Form1.TcpSocket.connect를 합니다.
   연결되면 작업한다.
   Form1.TcpSocket.disconnect;  
end;

프로그램을 종료하면 오류가 납니다. (OS별로 차이가 조금 있습니다.)
오류는 DestoryWindow인데 원인이 뭔지 모르겠습니다..
물론 연결을 밖에서 하면 오류가 나지 않습니다..
질문내용이 이상하면 리플 주세요.. -_-;;;

* 제생각
   : 인디소켓을 보니 connect하는 부분에서 핸들러 생성하는 부분에 Self를 쓰더군요.. 아마 이부분때문인 것 같다고 생각이 드는데...TEST해보니 꼭 그래서 인것 같지는 않습니다..

2  COMMENTS
  • Profile
    구창민 2004.06.17 00:16



    안녕하세요..

    작성하신 ABC 함수는 쓰레드의 멤버함수인가요?

    그렇다고 가정하면 쓰레드의 멤버클래쓰나 함수가 아닌호출을 하실시는

    안전하지 않으므로, Synchronize 로 ABC 함수를 호출해주시거나 혹은

    소켓을 함수내에서 지역변수처럼 동적 생성시켜 사용하시면

    해결 될거 같습니다.

    후자를 추천드리구요..

    그럼.. 즐거운 프로그래밍 하시길~
  • Profile
    너구리 2004.06.15 18:33
    저도 자세히는 모르지만..

    쓰레드를 동기화 시켜봐 주세요..

    이거 밖에 생각나는게 없네요..