Текущий архив: 2003.06.16;
Скачать: CL | DM;
ВнизUDP socket Найти похожие ветки
← →
Beerlover (2003-04-13 20:37) [0]При приеме ответа из сокета, buf становиться нулевым, в то время как ааа(байт принято)=232. Далее при попытке изменить размер buf происходит сбой...
tv.tv_sec:=1; // таймаут ответа сервера
tv.tv_usec:=0; //
WSAStartup($20,wsa);
serv_addr.sin_family := AF_INET;
serv_addr.sin_port := htons(53);
serv_addr.sin_addr.S_addr := inet_addr(PChar("192.168.16.1"));
sock:=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
if sock<0 then
begin
Messagedlg("Ошибка создания сокета",mtError,[mbOk], 0) ;
WSACleanup( );
exit;
end;
//Создание виртуального канала
error := connect(sock, serv_addr, sizeof(serv_addr));
if error <0 then
begin
Messagedlg("Ошибка подключения",mtError,[mbOk], 0) ;
WSACleanup( );
exit;
end;
setlength(buf, 29);
buf[0]:=#0;
buf[1]:=#1;
buf[2]:=#0;
buf[3]:=#0;
buf[4]:=#0;
buf[5]:=#1;
buf[6]:=#0;
buf[7]:=#0;
buf[8]:=#0;
buf[9]:=#0;
buf[10]:=#0;
buf[11]:=#0;
buf[12]:=#3;
buf[13]:="w";
buf[14]:="w";
buf[15]:="w";
buf[16]:=#4;
buf[17]:="m";
buf[18]:="a";
buf[19]:="i";
buf[20]:="l";
buf[21]:=#2;
buf[22]:="r";
buf[23]:="u";
buf[24]:=#0;
buf[25]:=#0;
buf[26]:=#1;
buf[27]:=#0;
buf[28]:=#1;
error := send(sock, buf[0], length(buf),0);
if error<0 then
begin
exit;
Messagedlg("Ошибка отправки данных",mtError,[mbOk], 0) ;
WSACleanup( );
end;
// Ждем ответа от сервера
FD_ZERO(wfds);
FD_SET(sock,wfds);
select(sock,@wfds,nil,nil,@tv);
if FD_ISSET(sock,wfds) then
begin
FD_CLR(sock,wfds);
setlength(buf, 512);
aaa:=recv(sock, buf, length(buf), 0);
if aaa<0 then Messagedlg("Сбой получения ответа сервера",mtError,[mbOk], 0);
setlength(buf,aaa);
// закрываем сокет
closesocket(sock);
WSACleanup( );
end;
← →
erikivaov (2003-04-14 19:17) [1]Используй Indy и ненаживеш гемороя.
← →
Zz_ (2003-04-14 19:30) [2]>>error := send(sock, buf[0], length(buf),0);
>>aaa:=recv(sock, buf, length(buf), 0);
может тут тоже надо buf[0] ?
Страницы: 1 вся ветка
Текущий архив: 2003.06.16;
Скачать: CL | DM;
Память: 0.44 MB
Время: 0.005 c