本人以前从事数据库开发,最近才研究winsock所以很多地方不是很明白啊,我按照书上的说法,用delphi写了一个调用getsockopt的例子,代码如下
procedure TForm1.Button1Click(Sender: TObject);
var
  Bool : Boolean;
  Sock1 : TSocket;
  Addr,Addr1 : SOCKADDR_IN;
  WSAData1 : WSAData;
  BoolLen : Integer;
  AddrLen : integer;
begin
  Bool := False;
  BoolLen := sizeof(Bool);
  AddrLen := Sizeof(Addr1);
  WSAStartUp(makeword(2,2),WSAData1);
  Sock1 := Socket(AF_INET,Sock_Stream,IPPROTO_TCP);
  Addr.sin_family := AF_INET;
  Addr.sin_port := htons(5150);
  Addr.sin_addr.S_addr := INET_Addr('servername');
  bind(Sock1,Addr,sizeof(Addr));
  Listen(Sock1,8);
  Accept(Sock1,@Addr1,@AddrLen);
  if GetSockopt(Sock1,SOL_SOCKET,SO_ACCEPTCONN ,pchar(Bool),BoolLen) = SOCKET_ERROR then  if Bool  then
    showmessage('调用成功');
  CloseSocket(Sock1);
  WSACleanup();end;
但不知道为什么总是返回false啊,请各位高手指点一下