bind

Тема в разделе "WASM.NETWORKS", создана пользователем netw0rm, 20 ноя 2005.

  1. netw0rm

    netw0rm New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2005
    Сообщения:
    78
    Подскажите плз, нигде найти не могу

    mov [esi].sin_family, AF_INET

    and [esi].sin_port, 0

    mov [esi].sin_addr, INADDR_ANY

    invoke bind, [lsock], esi, sizeof sockaddr_in

    При этом система сама выбирает где открыть порт. Как мне узнать где она его открыла?
     
  2. Flasher

    Flasher Member

    Публикаций:
    0
    Регистрация:
    31 янв 2004
    Сообщения:
    640
    Код (Text):
    1. .data
    2. szSockaddr_in  dd 16
    3. .code
    4. start proc
    5.      local sock:dword
    6.      local sin:sockaddr_in
    7.      local wsadata:WSADATA
    8.      local port[16]:byte
    9.  
    10.        invoke WSAStartup,00000202h,addr wsadata
    11.        invoke socket,02h,01h,00h
    12.        mov sock,eax
    13.        mov sin.sin_port,0
    14.        mov sin.sin_family,02h
    15.        mov sin.sin_addr,000000000h
    16.        invoke bind,sock,addr sin,16
    17.  
    18.        invoke getsockname,sock,addr sin,offset szSockaddr_in
    19.        mov ax,sin.sin_port
    20.        xchg ah,al
    21.        invoke wsprintfA,addr port,$CTA0("%i"),eax
    22.        invoke MessageBoxA,0,addr port,addr port,0
    23.        invoke closesocket,sock
    24.        invoke WSACleanup
    25.        invoke ExitProcess,0      
    26. start endp
    27. end start
     
  3. samba

    samba New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    65
    Адрес:
    England
    Код (Text):
    1.  
    2. and [esi].sin_port,0 ;тут ошибка
    3.  


    если пишешь 0 - система сама назначает первый свободный порт
     
  4. netw0rm

    netw0rm New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2005
    Сообщения:
    78
    Flasher, спасибо.

    samba, мне надо что б система сама выбрала порт
     
  5. bober

    bober New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2005
    Сообщения:
    153
    netw0rm







    Сделай GetTickCount и сисема сама тебе выдаст номер порта.
     
  6. netw0rm

    netw0rm New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2005
    Сообщения:
    78
    А где гарантии что он свободен?

    Тем-более зачем мучатся если механизм существует?
     
  7. bober

    bober New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2005
    Сообщения:
    153
    netw0rm







    Вызовай пока ненайдеш свободный, вероятость что будет болше двух вызовав очень маленикая. Зато меньше кода писать.



    mov saddr.sin_family, AF_INET

    mov saddr.sin_addr, INADDR_ANY

    @@:

    invoke GetTickCount

    mov saddr.sin_port, ax

    invoke bind, [lsock], addr sockaddrin, sizeof sockaddr_in

    test eax, eax

    jz @b
     
  8. netw0rm

    netw0rm New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2005
    Сообщения:
    78
    Палка на 2-х концах

    С одной стороны "надежное" программирование с другой "красивое".

    ну тут 2 beer or not.. . вспоминается :)
     
  9. samba

    samba New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    65
    Адрес:
    England
    bober

    Зачем изобретать велосипед, раз сама Windows назначит порт? К тому же такой перебор в цикле работает долго и жрет ресурсы
     
  10. bober

    bober New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2005
    Сообщения:
    153
    samba



    Иди ты на ......
     
  11. samba

    samba New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    65
    Адрес:
    England
    bober

    Не знаю почему мой ответ мог вызвать неадекватную реакцию у семейства бобровых... :)
     
  12. bober

    bober New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2005
    Сообщения:
    153
    samba







    Ты бы еще подрыв экономики всей России там усмотрел:)
     
  13. samba

    samba New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    65
    Адрес:
    England
    bober

    Помоему кто-то обкурился. Поаккуратней с этим :)
     
  14. bober

    bober New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2005
    Сообщения:
    153
    samba



    Иди на заин со своими тупыми коментариями.
     
  15. netw0rm

    netw0rm New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2005
    Сообщения:
    78
    Ну вы даёте :)
     
  16. samba

    samba New Member

    Публикаций:
    0
    Регистрация:
    24 авг 2003
    Сообщения:
    65
    Адрес:
    England
    bober

    ...Да у тебя месячные походу...

    по другому твою реакцию не могу понять
     
  17. bober

    bober New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2005
    Сообщения:
    153
    samba







    Не суди по себе :)
     
  18. netw0rm

    netw0rm New Member

    Публикаций:
    0
    Регистрация:
    6 ноя 2005
    Сообщения:
    78
    я вижу проблема определения порта задела вас не по детски =)
     
  19. bober

    bober New Member

    Публикаций:
    0
    Регистрация:
    25 фев 2005
    Сообщения:
    153
    netw0rm



    Это похоже на что-то глубоко личное и неимеющее отношения к теме вообще:)