Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.30;
Скачать: CL | DM;

Вниз

прослушивание порта UDP   Найти похожие ветки 

 
begginer   (2006-07-06 10:46) [0]

Собственно есть программа (чат), работает по UDP... Хочу написать собственный клиент, с отправкой сообщений я разобрался, не могу только получать сообщения... Вот у меня и вопрос как получать пакеты которые пришли на этот UDP порт?


 
StriderMan ©   (2006-07-06 12:07) [1]

а какие используются компаненты для работы с UDP?


 
begginer   (2006-07-06 18:10) [2]

да это не столь важно, я разобрался как отправлять с помощью Indy UDP client, а вот с idUDPServer не смог разобраться как его настроить и заставить слушать (принимать пакеты на определенном порту) пробовал через событие idUDPServerUDPRead, но оно никогда не срабатывало, хотя сообщения приходили... Также пробовал через WinSock, но там после вызова listen не понял как принимать пакеты :(


 
Zeqfreed ©   (2006-07-06 18:12) [3]

http://www.delphikingdom.com/asp/viewitem.asp?catalogid=1021


 
begginer   (2006-07-08 19:36) [4]

Спасибо за сслылку, буду читать... вот как я пытася ловить пакеты:


var
 my_sock: TSocket;
 tmp: TWSAData;
 addr: TSockAddr;
 res_bind: integer;
 optlen: integer;
 optval: PChar;
begin
 WSAStartup(MakeWord(2,2), tmp);
 my_sock:=socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
...
 addr.sin_family:= AF_INET;
 addr.sin_addr.S_addr:= htonl(INADDR_ANY);
 addr.sin_port:= htons(8169); // порт который меня интересует...
...
 res_bind:= bind(my_sock, addr, SizeOf(addr));
 if res_bind <> 0 then
 begin
   setsockopt(my_sock, SOL_SOCKET, SO_REUSEADDR, optval, optlen);
   bind(my_sock, addr, SizeOf(addr));
 end;
....
 reciev(my_sock);
.....
 WSACleanup;

// теперь процедура получения

procedure reciev(my_sock: TSocket);
var
 buf: PChar;
 bufsize: DWORD;
 from: sockaddr_in;
 fromlen: integer;
 wsaerr: integer;
begin
 bufsize:= 1024;
 GetMem(buf, bufsize);
 fromlen:= sizeof(from);
 while true do
 begin
 wsaerr:= recvfrom(my_sock, buf^, bufsize, 0, from, fromlen);
 ...
 end;
end;

далее идет обработка результата, но в буфере никогда ничего не бывает... Может где ошибка есть, сам найти не могу :(



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

Текущий архив: 2006.07.30;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.026 c
15-1152082002
dddd
2006-07-05 10:46
2006.07.30
Знает ли кто нибудь пустынную улицу в СЗАО Москвы - учить водить?


15-1151664375
гастрит
2006-06-30 14:46
2006.07.30
глюк


2-1152650237
XeON
2006-07-12 00:37
2006.07.30
Удаление записи из массива


8-1139383204
AlexeyMir
2006-02-08 10:20
2006.07.30
Как муз.файла независимо воспроизвести на 2х звуковых


2-1152159695
TaSk
2006-07-06 08:21
2006.07.30
Музыка