winsocket——api翻译出了问题??????
为什么DELPHI总是-1 而VC中正确的确实 0 呢?
以下代码是从 VC中翻译过来的:但到下面有一步总是为-1;
而VC中是0可以正确执行! 怎么办?
uses uses winsock,idwinsock2;
const MAX_HOSTNAME_LAN=256;
  m_nCapPort = 56789;
  IP_HDRINCL  =2;
var
  m_sockCap :TSocket;
  err:Longint;
  phe  : PHostEnt;
  hname:array [0..256]of char;
 bopt :  BOOLean;
 sa    :    SOCKADDR_IN ;
 dwBufferLen :array [0..9]of DWORD ;
 dwBufferInLen,dwBytesReturned  ,SIO_RCVALL: DWORD;
begin
m_sockCap := socket(AF_INET , SOCK_RAW , IPPROTO_IP);
 err := gethostname(hname, 256);
 pHe := gethostbyname(hname);
 sa.sin_family := AF_INET;
 sa.sin_port   := htons(m_nCapPort);
 StrPLCopy(@sa.sin_addr.S_addr, ((pHe.h_address_list)^)^, pHe.h_length);
 err := bind(m_sockCap, @sa, sizeof(sa));
 bopt:=TRUE;
 err := setsockopt(m_sockCap, SOL_SOCKET, SO_REUSEADDR, Pchar(@bopt), sizeof(bopt));
 bopt := TRUE;
 err := setsockopt(m_sockCap, IPPROTO_IP, IP_HDRINCL, Pchar(@bopt), sizeof(bopt));  ///这里怎么老是-1 ???
end;
procedure TForm1.FormShow(Sender: TObject);
const wVersion =2;
var
 wsaData1:TWSADATA ;
begin
 WSAStartup(wVersion, wsaData1);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
WSACleanup();
end;