상세 컨텐츠

본문 제목

64비트에서 WSAAccept 오동작 문제

프로그래밍/Delphi

by ryujt 2012. 6. 29. 17:54

본문

var
  NewSocket : TSocket;
  pAddr : PSockAddr;
  pAddrLen : PINT;
begin
  New(pAddr);
  New(pAddrLen);
  NewSocket := WSAAccept(Socket, pAddr, pAddrLen, nil, 0);

위와 같은 코드가 64비트에서는 작동하지 않습니다.  잘못된 포인터 어쩌고 하는 에러가 닙니다.  32비트에서는 잘 돌아갑니다 ㅠ.ㅠ

PINT64 및 다른 방법으로 메모리 공간을 충분히 확보해 줘도 마찬가지 입니다.  packed record 도 한 번 시도 해보고 여러 가지 다른 방법도 찾아봤지만 모두 실패 ㅠ.ㅠ

  NewSocket := WSAAccept(Socket, nil, nil, nil, 0);

위의 코드는 32비트와 64비트에서 모두 잘 작동합니다.  이유는 아직 모르겠습니다 ^^;


일단 인디에서는 문제가 없으니, 거기서부터 힌트를 찾아야 겠습니다.  당장은 바쁜 일이 있어서 32비트로 작업을 진행하다가 해결책을 찾아봐야 겠습니다.

관련글 더보기