是否应该先出始化winsock动态连接库,代码如下:
var 
wsadata:twsadata;
……
begin
if wsastartup($002,wsadata)<>0 then halt;clisock:=socket(AF_INET,SOCK_stream,0);
  if(clisock=INVALID_SOCKET) then
        begin
          application.MessageBox('创建SOCKET出现错误,程序即将关闭','严重错误',mb_ok+mb_iconwarning);
          application.Terminate;
        end;
  ZeroMemory(@saproxy,sizeof(saproxy));
……
end;

解决方案 »

  1.   

    wsastartup($002,wsadata)最后要WSACleanUp;
      

  2.   

    var
      clisock:tsocket;
      saproxy:TSockAddr;
      re:integer;
    begin
      WSAStartUp($1010, WSData);
      try
        clisock:=socket(AF_INET,SOCK_stream,0);
        if(clisock=INVALID_SOCKET) then
        begin 
          Error()
        end;
        ZeroMemory(@saproxy,sizeof(saproxy));
        saproxy.sin_family := AF_INET;
        saproxy.sin_addr.S_addr :=inet_addr('192.168.0.1');  
        saproxy.sin_port := htons(9600);
        //
        block := 1; //Integer type, 不知是1, 还是0,设为阻塞模式
        iosockopt(clisock,  参数忘了,block)
        //
        Re:=connect(clisock,saproxy,sizeof(saproxy));
        if Re=SOCKET_ERROR then
        begin   
          Error()
        end;
        //
      finally
        closehandle(clisock);
        WSACleanUp;
      end;
    end;