The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"UDP sockets recvfrom() problem"
Вариант для распечатки Архивированная нить - только для чтения! 
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"UDP sockets recvfrom() problem"
Сообщение от Алексей Запруднов emailИскать по авторуВ закладки on 22-Апр-02, 13:55  (MSK)
Господа, прошу прощения, если вопрос слишком туп.Мне надо накатать программку типа ping, которая посылала бы UDP пакет и ждала ответ, причем с минимальными изменениями работала бы под winsock и Unix. Порт dest/src должен быть всегда 3386 ( это GTP, если интересно ). Я делаю socket, bind, sendto, select и recvfrom. Кстати, пока это всё под Windows, sorry. Нужный пакет посылается ( я его вижу на приборе ) , select говорит - можно читать ( хотя ответа нет ) , recvfrom не блокируется но и не читает, код ошибки от WSAGetLastError "Connection reset by peer". Попробовал разблокировать сокет с помощью ioctrlsocket - ничего не меняется. Какой коннекшн, какой пир - ничего не понимаю, чайник я в этом деле. А надо мне или слететь по таймауту или прочесть чего - нибудь. Как бы этого добиться ???
  Рекомендовать в FAQ | Cообщить модератору | Наверх

 Оглавление

Индекс форумов | Темы | Пред. тема | След. тема
Сообщения по теме

1. "RE: UDP sockets recvfrom() problem"
Сообщение от XMan emailИскать по авторуВ закладки on 22-Апр-02, 14:25  (MSK)
А bind тебе зачем ? Ты же клиента пишешь ?
Типа, socket, sendto и recvfrom хватит. Если у тебя один сокет, то select тоже можно не пользовать.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

2. "RE: UDP sockets recvfrom() problem"
Сообщение от Алексей Запруднов emailИскать по авторуВ закладки on 22-Апр-02, 14:33  (MSK)
>А bind тебе зачем ? Ты
>же клиента пишешь ?
Bind ом я устанавливаю порт отправителя ( просто не знаю как по другому, а надо )
>Типа, socket, sendto и recvfrom хватит.
>Если у тебя один сокет,
>то select тоже можно не
>пользовать.
А КАК ПОДОЖДАТЬ ОТВЕТА И ЕСЛИ ЕГО НЕТ, ДВИГАТЬ ДАЛЬШЕ  ??!!


  Рекомендовать в FAQ | Cообщить модератору | Наверх

3. "RE: UDP sockets recvfrom() problem"
Сообщение от XMan emailИскать по авторуВ закладки on 22-Апр-02, 18:02  (MSK)
1. bind создает сокет для сервера, который получает SYN-пакеты, пришедшие на этот порт :))
Вообще сокеты и порты - это разные понятия.

2. для задания timeout при ожидании действительно лучше пользовать select. У него есть такой параметр.

  Рекомендовать в FAQ | Cообщить модератору | Наверх

5. "RE: UDP sockets recvfrom() problem"
Сообщение от Алексей Запруднов emailИскать по авторуВ закладки on 23-Апр-02, 10:24  (MSK)
>1. bind создает сокет для сервера,
>который получает SYN-пакеты, пришедшие на
>этот порт :))
SYN-пакеты в UDP ??!! это я не понял
>Вообще сокеты и порты - это
>разные понятия.
Это я понял

  Рекомендовать в FAQ | Cообщить модератору | Наверх

6. "RE: UDP sockets recvfrom() problem"
Сообщение от XMan emailИскать по авторуВ закладки on 23-Апр-02, 15:32  (MSK)
Согласен - про SYN-пакеты я прогнал :))
Это для TCP :))
Вобщем, на клиенте bind тебе все равно не нужен.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

4. "RE: UDP sockets recvfrom() problem"
Сообщение от genie Искать по авторуВ закладки on 23-Апр-02, 03:59  (MSK)
UDP? WSAConnReset oznachaet, chto korrespondent ne slushaet na etom portu. Bind tebe ne nuzhen, esli tebe ne nuzhen specificheski port na kliente:

   Client                 Server
    s=socket              s=socket
                          bind(s,3386)
    while(1)                 while(1)
    {                        {
        send(s,data);           select(s,read);
        select(s,read);         read(s);
        if(ok) read(s,data);    if(ok)
                               send (s,reply,clientIP);
    }

  Рекомендовать в FAQ | Cообщить модератору | Наверх

7. "RE: UDP sockets recvfrom() problem"
Сообщение от XMan emailИскать по авторуВ закладки on 23-Апр-02, 15:36  (MSK)
Незнаю как в win, но в linux/freebsd об отсутствии слушалки говорит сообщение "Connection refused" ("в соединении отказано"), а "Connection reset by peer" (если правильно помню) говорит о закрытии сервером соединения ("сервер сбросил соединение").
А вообще к UDP эти понятия пожалуй неприменимы.
  Рекомендовать в FAQ | Cообщить модератору | Наверх

8. "RE: UDP sockets recvfrom() problem"
Сообщение от genie Искать по авторуВ закладки on 24-Апр-02, 01:32  (MSK)
>Незнаю как в win, но в
>linux/freebsd об отсутствии слушалки говорит
>сообщение "Connection refused" ("в соединении
>отказано"), а "Connection reset by
>peer" (если правильно помню) говорит
>о закрытии сервером соединения ("сервер
>сбросил соединение").
>А вообще к UDP эти понятия
>пожалуй неприменимы.
Primenimy. Esli UDP socket ne otkryt i OS TCP stack podderzhivaet/razreshaet ICMP error messages, to posylatelu paketa budet poslana oshibka, kotoraya na socket layer budet vozvraschena kak "Connection reset".

  Рекомендовать в FAQ | Cообщить модератору | Наверх

9. "RE: UDP sockets recvfrom() problem"
Сообщение от David emailИскать по авторуВ закладки on 04-Май-02, 19:58  (MSK)
Вообще конечно сообщение "Connection reset by peer" - тот ещё прикол :-). Никакого конекшена тут и близко быть не может, т.к. UDP. Ты ничего не сказал про сервер. Может дело в нём? Ты случайно не пытаешься отправить UDP-сообщение на TCP-порт? (извини, но ты сам сказал, что чайник в этом деле)
  Рекомендовать в FAQ | Cообщить модератору | Наверх


Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Пожалуйста, прежде чем написать сообщение, ознакомьтесь с данными рекомендациями.




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру