WinSock под Делфи
У кого-нибудь есть опыт программирования см. тему?
Проблема такая: при вызове функции recvfrom компилятор выдает сообщение об ошибке - [Error] Unit1.pas(116): Types of actual and formal var parameters must be identical. Платформа - W2k, Delphi5.
Кусок кода привожу ниже:
GetMem(BufrRecvd,255);
SockAddr.sin_family:=AF_INET;
SockAddr.sin_port:=Htons(32767);
//здесь, ессно, адрес нормальный
SockAddr.sin_addr.S_addr:=inet_addr('x.x.x.x');
SockAddrFrom.sin_family:=AF_INET;
SockAddrFrom.sin_addr.s_addr:=INADDR_ANY;
SockAddrFrom.sin_port:=Htons(32767);
WSAStartup($02,wsadat);
Socket1:= socket(AF_INET,SOCK_RAW,IPPROTO_IP);
if Socket1 = -1 then
begin
MessageBox(Form1.Handle,PChar('Ошибка создания сокета: '+IntToStr(WSAGetLastError)),
'Soket', MB_OK);
Exit;
end;
BufrSend:='0000000000';
TmpInt:=SendTo(Socket1,BufrSend,Length(BufrSend),0,SockAddr,SizeOf(SockAddr));
if TmpInt = SOCKET_ERROR then
begin
MessageBox(Form1.Handle,PChar('Ошибка передачи блока данных: '+IntToStr(WSAGetLastError)),
'Soket', MB_OK);
CloseSocket(Socket1);
Exit;
end;
TmpInt:=RecvFrom(Socket1,BufrRecvd,Length(BufrRecvd),0,null,null);
if TmpInt = SOCKET_ERROR then
begin
MessageBox(Form1.Handle,PChar('Ошибка приема блока данных: '+IntToStr(WSAGetLastError)),
'Soket', MB_OK);
CloseSocket(Socket1);
Exit;
end;
...