Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > что не так? передача через WinSock


Автор: v1m 19.6.2010, 21:31
Сабж.
Код
uses
  SysUtils,windows,winsock2;
const
  SVersion = $0101;
  SPort = 27000;

var
  WSData : TWSAData;
  CSocket : TSocket;
  address : PSockAddr;

  Procedure IfError(error : longint);
  begin
    if error<>0 then begin Writeln('> Error code: ',error); readln; halt(0); end;
  end;

begin
  IfError(WSAStartup(SVersion,WSData));
  CSocket:=socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
  if GetLastError<>0 then writeln('> Error code: ',GetLastError);
  address.sin_family:=PF_INET;
  address.sin_addr.S_addr:=INADDR_ANY;
  address.sin_port:=htons(SPort);
  FillChar(address.sin_zero,sizeof(address.sin_zero),0);
  IfError(connect(CSocket,address,SIZEOF(address)));
  send(CSocket,$FF,1,0); //я не очень понял как отправлять?
  IfError(closesocket(CSocket));
  IfError(WSACleanup);
  readln;
end.
 <_<

Автор: dvamaster 21.6.2010, 12:40
Цитата(v1m @  20.6.2010,  00:31 Найти цитируемый пост)
send(CSocket,$FF,1,0); //я не очень понял как отправлять?


$FF - на этом месте должна быть указана переменная с данными
1 - это длинна передаваемых данных

Код

var
  b: Byte;
...
  b := $FF;
  send(CSocket, b, 1, 0) // передаем 1 байт содержащий $FF с длинной 1 байт м флагом 0
...

Автор: v1m 22.6.2010, 10:58
сор) я тут уже разобрался в отправке у меня теперь проблема другая
странно изменил версию winsock-а с 2.2 на 1.1 и все заработало))
Код
{$APPTYPE CONSOLE}
uses
  windows,winsock;
const
  SVersion = $0101;
  SPort = 12345;

var
  WSData : TWSAData;
  CSocket : TSocket;
  address : TSockAddr;
  buf : string;

  Procedure IfError(error : longint);
  begin
    if error=-1 then begin error:=GetLastError; Writeln('> Error code: ',error); readln; halt(1); end;
  end;

begin
  IfError(WSAStartup(SVersion,WSData));
  CSocket:=socket(AF_INET,SOCK_DGRAM,0);
  IfError(CSocket); 
  address.sin_family:=aF_INET;
  address.sin_addr.S_addr:=inet_addr('127.0.0.1');
  address.sin_port:=htons(SPort);
  buf:='hello';
  IfError(sendto(CSocket,buf[1],length(buf),0,address,SIZEOF(address)));
  closesocket(CSocket);
  WSACleanup;
end.
обьясните в чем делоuser posted image

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)