Winsock 的初级问题(118分)

  • 主题发起人 主题发起人 sprite
  • 开始时间 开始时间
S

sprite

Unregistered / Unconfirmed
GUEST, unregistred user!
用 WINSOCK API 写了个N简单的程序 就是用不能用
如下
procedure TForm1.Button1Click(Sender: TObject);
const
WINSOCK_VERSION=$0200;
AF_INET_LENGTH=4;
var
wsaDATA:TWSADATA;
lpHostEnt:PHOSTENT;
dwIpAddr:DWORD;
szIpAddr:PCHAR;
begin

//new(lpHostEnt);
if (WSAStartup(WINSOCK_VERSION,wsaDATA)=0) then
ShowMessage('Start Error')
else
begin
lpHostEnt:=gethostbyname('www.263.net');
if lpHostEnt=nil then ShowMessage('Get Error')
else
begin
szIpAddr:=inet_ntoa(Tinaddr(lpHostEnt^.h_addr_list));
MessageBox(0,szIpAddr,'hehe',MB_OK);
end;
end;
//freemem(szIpAddr);
{ dwIpAddr:=inet_addr('210.34.0.13');
ShowMessage(inttostr(dwIpAddr));
lpHostEnt:=gethostbyaddr(@dwIpAddr,AF_INET_LENGTH,AF_INET);
if lpHostEnt<>nil then ShowMessage(lpHostEnt^.h_name);
}

//dispose(lpHostEnt);
WSACleanup;

end;
就是老是 Get Error
望高手指教

 
error num 10092 WSAVERNOTSUPPORTED , winsock 2.0 不可用
用WINSOCK_VERSION=257;即可
 
可以使用WSAGetLastError()来获得具体的错误码。这样查一下原因。
 
我试过了257对了应该是$257
不过也不行 还是'Get Error'
是不是跟我用的WinSock.dll的版本有关系
还有 怎么知道 版本号
谢了。
 
用$0202试试?再不行用$0101.
用GetLastError()看看错误号码?
 
不是这个问题,上次忘了
if (WSAStartup(WINSOCK_VERSION,wsaDATA)=0) then
应该为
if (WSAStartup(WINSOCK_VERSION,wsaDATA)<>0) then
WINSOCK_VERSION=257是使用1.1版的WINSOCK,即$0101
我试过了,在98下没有问题的

 
接受答案了.
 
这样就接受答案了?好象有时候用gethostbyaddr能取到,有时候却是nil,我的网络是通的!为什么?
 
后退
顶部