请问关于winsock的问题? 你那是Socket几点,是不是delphi5,怎么改,complie都不过那些结构是你定义的,那WinSock.pas不是有吗。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我改了一下,能通过,可能是由于你在TSockAddrIn结构赋值的时候可能出错了。uses WinSock, ScktComp;function WinSockInit(NetworkNum:longword): Integer;var WSAData: TWSAData; ErrorCode: Integer; FSocket: TSocket; FLinger: TLinger; FAddr: TSockAddrIn; SockNum: Integer;begin SockNum := $5201;{ VersionReqd:=$0101;} Result := -1; ErrorCode := WSAStartup($0101, WSAData); if ErrorCode <> 0 then raise Exception.Create('Window Socket Error On API:WSAStartup'); if NetworkNum = 0 then FSocket := socket(AF_INET, SOCK_DGRAM, 0) else FSocket := socket(AF_IPX, SOCK_DGRAM, IPPROTO_IP); if FSocket = INVALID_SOCKET then begin WSACleanup; ShowMessage('socket error'); Exit; end; FLinger.l_onoff := 1; FLinger.l_linger := 0; { 允许接收或发送广播数据 } setsockopt(FSocket, SOL_SOCKET, SO_BROADCAST, PChar(@FLinger), SizeOf(FLinger)); if NetworkNum = 0 then begin FAddr.sin_family := AF_INET; FAddr.sin_port := ntohs(SockNum); FAddr.sin_addr.s_addr := INADDR_ANY; ErrorCode := bind(FSocket, FAddr, SizeOf(FAddr)); end else begin FAddr.sin_family := AF_IPX; FAddr.sin_port := ntohs(SockNum); FAddr.sin_addr.s_addr := INADDR_ANY; ErrorCode := bind(FSocket, FAddr, SizeOf(FAddr)); end; if ErrorCode <> 0 then begin ShowMessage('Window Socket Error On API: bind'); WSACleanup; Exit; end; { Stream:=TMemoryStream.Create; Stream.SetSize(FILELEN); squence:=0; } Result := 0;end;procedure TForm1.BitBtn1Click(Sender: TObject);begin//WinSockInit(1) then Socket Error if WinSockInit(0) = 0 then ShowMessage('success') else showmessage('fail')end; 因为ping SockAddr就不通 试 求助,难道程序运行时生成的控件都不能永久保存吗? 求推荐射频卡读卡器 如何将这段VB代码转换为Delphi代码? 只显示文件夹的名字 请提供一个类似qq里分组控件 请问怎样发布软件? 为什么我的数据模块与tdbedit关联不上呀 打开窗体出现Win32 Error的问题,求救! InsideDelphi,请问怎么写呢? Delhi如此可怜 ole的小问题? DBGrid的一个使用问题,急!!!!
WinSock, ScktComp;function WinSockInit(NetworkNum:longword): Integer;
var
WSAData: TWSAData;
ErrorCode: Integer;
FSocket: TSocket;
FLinger: TLinger;
FAddr: TSockAddrIn;
SockNum: Integer;
begin
SockNum := $5201;
{ VersionReqd:=$0101;}
Result := -1;
ErrorCode := WSAStartup($0101, WSAData);
if ErrorCode <> 0 then
raise Exception.Create('Window Socket Error On API:WSAStartup');
if NetworkNum = 0 then
FSocket := socket(AF_INET, SOCK_DGRAM, 0) else
FSocket := socket(AF_IPX, SOCK_DGRAM, IPPROTO_IP);
if FSocket = INVALID_SOCKET then
begin
WSACleanup;
ShowMessage('socket error');
Exit;
end;
FLinger.l_onoff := 1;
FLinger.l_linger := 0; { 允许接收或发送广播数据 }
setsockopt(FSocket, SOL_SOCKET, SO_BROADCAST, PChar(@FLinger), SizeOf(FLinger));
if NetworkNum = 0 then
begin
FAddr.sin_family := AF_INET;
FAddr.sin_port := ntohs(SockNum);
FAddr.sin_addr.s_addr := INADDR_ANY;
ErrorCode := bind(FSocket, FAddr, SizeOf(FAddr));
end else
begin
FAddr.sin_family := AF_IPX;
FAddr.sin_port := ntohs(SockNum);
FAddr.sin_addr.s_addr := INADDR_ANY;
ErrorCode := bind(FSocket, FAddr, SizeOf(FAddr));
end;
if ErrorCode <> 0 then
begin
ShowMessage('Window Socket Error On API: bind');
WSACleanup;
Exit;
end;
{ Stream:=TMemoryStream.Create;
Stream.SetSize(FILELEN);
squence:=0; }
Result := 0;
end;procedure TForm1.BitBtn1Click(Sender: TObject);
begin//WinSockInit(1) then Socket Error
if WinSockInit(0) = 0 then ShowMessage('success') else showmessage('fail')
end;