Вниз
Скачать: CL | DM;

sendto проблемы!   Найти похожие ветки 

 
Chubais   (2005-04-11 02:13) [0]

Доброго времени суток!

В общем-то нужно передавать структуру частями... т.к. она слишком большая для посылки за 1 раз. Делаю так:


procedure SendData(ip: string; data: struct);
const ANSWER_SIZE = 1460;
var sin :Tsockaddr;
   s   :TSocket;
   lsin, ldata: integer;
label no_mod, bye_bye;
begin
 s := socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
 if s = INVALID_SOCKET then begin
    exit;
 end;

 sin.sin_family := AF_INET;
 sin.sin_port := htons(6483);
 sin.sin_addr.S_addr := inet_addr(pChar(ip));

 ldata := sizeof(data);
 lsin  := sizeof(sin);

 asm
   mov eax, ldata
   mov esi, offset data
   mov ecx, ANSWER_SIZE
   xor edx, edx
   div ecx
   mov ebx, eax
   cmp edx, 0
   jz no_mod
   mov edi, edx
   cmp ebx, 0
   jz no_mod
   dec edi
   no_mod:
   push lsin
   push offset sin
   push 0
   push edi
   push esi
   push s
   call sendto
   cmp eax, SOCKET_ERROR
   jnge bye_bye
   mov edi, ANSWER_SIZE
   add esi, ANSWER_SIZE
   dec ebx
   cmp ebx, -1
   jg no_mod
   bye_bye:
 end;      

 closesocket(s);
end;


ф-ция sendto - возвращает оочень странное число! но не SOCKET_ERROR! И УДП датаграмма не доходит естест-но. Укажите мастера, что не так. В делфи я не силен, но знаю что с указателями там траблы, но если ы можете сделать данный код без использования асма - то это приветствуется!

Благодарен!


 
Digitman ©   (2005-04-11 08:33) [1]


> знаю что с указателями там траблы


и какие-же, позвольте осведомиться ?



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.024 c
5-1090750591
P.N.P.
2004-07-25 14:16
2005.07.18
PropertyEditor


1-1120366420
Revers
2005-07-03 08:53
2005.07.18
Команды меню Edit


8-1110725856
Uncle Dix
2005-03-13 17:57
2005.07.18
Считывание сигнала с линейного входа(Line in) звуковой карты


3-1118169990
Erich
2005-06-07 22:46
2005.07.18
Автоинкрементное поле


4-1116761869
dEd
2005-05-22 15:37
2005.07.18
Очистка буфера клавиатуры




   Наверх