Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Power Basic

Страница: 1 |

 

  Вопрос: TCP OPEN SERVER PORT - кто стучится в дверь моя Добавлено: 20.03.06 21:04  

Автор вопроса:  Андрей | Web-сайт: - | ICQ:
Есть такая замечательная конструкция:
TCP OPEN SERVER PORT %ServerPort AS #1
Ну, типа запускаем сервер :) , дальше тож просто:
TCP NOTIFY #1, ACCEPT TO hDlg AS %TCP_ACCEPT
Устанавливаем обработчик входящих,
TCP ACCEPT #1 AS num
И принимаем соединение! (замечательно работает)

Но кто приконектился?, ну типа IP его?
Хелп перерыл, не нашел(а мож повылазило).

Ну с UDP всё-ж просто!
UDP RECV #hUdp, FROM ipAddr, ipPort, Buffer
Вот тебе и IP и порт и данные(всё в одном флаконе).

Если знает кто как? (мож через API) поделитесь плз.

Ответить

  Ответы Всего ответов: 11  

Номер ответа: 1
Автор ответа:
 Billi Gates



ICQ: 242-026-281 

Вопросов: 25
Ответов: 57
 Профиль | | #1 Добавлено: 20.03.06 21:06
Присоединяюсь к вопросу, тоже не знаю!

Ответить

Номер ответа: 2
Автор ответа:
 Fever



Вопросов: 60
Ответов: 808
 Профиль | | #2 Добавлено: 20.03.06 21:16
Это как так??? А вб такой синтаксис поддерживает? Круто... Перейду на Power Basic :)

Ответить

Номер ответа: 3
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #3
Добавлено: 21.03.06 17:41
Не знаю, как в хитром PBшном синтаксисе, а в WinAPI IP-адрес клиента можно получить, передав функции accept для заполнения вторым параметром структуру sockaddr

Ответить

Номер ответа: 4
Автор ответа:
 Billi Gates



ICQ: 242-026-281 

Вопросов: 25
Ответов: 57
 Профиль | | #4 Добавлено: 21.03.06 18:21
а поподробнее как VB6 это сделать? Желательно с маленьким примерчиком!

Ответить

Номер ответа: 5
Автор ответа:
 Андрей



ICQ:

Вопросов: 1
Ответов: 3
 Web-сайт: -
 Профиль | | #5
Добавлено: 21.03.06 19:29
Ага вот кажись оно:
' Socket address, internet style.
TYPE sockaddr_in
    sin_family AS INTEGER
    sin_port AS WORD
    sin_addr AS in_addr
    sin_zero AS STRING * 8
END TYPE
DECLARE FUNCTION aaccept LIB "wsock32.dll" ALIAS "accept" (BYVAL s AS DWORD, address AS sockaddr_in, addrlen AS LONG) AS DWORD

Но тут возникает вопрос, наверняка PB в своём (TCP ACCEPT)
юзает именно эту функцию, (вообще он (PB) мне напоминает сильно замаскированный макроассемблер),
 и куда он деёт потом эту структуру, затирает за ненадобностью, не хочется верить.
Ну хотца мне юзать стандартный синтаксис, ну можно
конечно всё писать через API, оставив только циклы и математику (вероятно многие так и делают(и возможно это даже правильно???))...

Ответить

Номер ответа: 6
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #6
Добавлено: 21.03.06 22:36
вообще он (PB) мне напоминает сильно замаскированный макроассемблер
Совсем не удивительно, зайди на www.movsd.com и увидишь ссылки на него и masm32 на главной :)
и куда он деёт потом эту структуру, затирает за ненадобностью
Может вообще не получать, если передает вместо указателя на нее NULL

Ответить

Номер ответа: 7
Автор ответа:
 Андрей



ICQ:

Вопросов: 1
Ответов: 3
 Web-сайт: -
 Профиль | | #7
Добавлено: 22.03.06 14:36
>>Может вообще не получать, если передает вместо указателя на нее NULL

Но вроде из декларации, в функцию удодит сама структура, а не указатель на неё(или я не вьезжаю)?

Ответить

Номер ответа: 8
Автор ответа:
 Sharp


Лидер форума

ICQ: 216865379 

Вопросов: 106
Ответов: 9979
 Web-сайт: sharpc.livejournal.com
 Профиль | | #8
Добавлено: 27.03.06 22:50
Конечно указатель, структуры по значению передают только борландовские извращенцы, да и то не все.

Ответить

Номер ответа: 9
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #9 Добавлено: 29.03.06 12:32
ооо :)))) Тогда я даже больше чем извращенец :)

Ответить

Номер ответа: 10
Автор ответа:
 JMP



Вопросов: 6
Ответов: 171
 Профиль | | #10 Добавлено: 19.10.06 05:41
Если знает кто как? (мож через API) поделитесь плз.



' [in] hTCP - PB-шный хандл сокета [out]- IP as string
FUNCTION TCPGetIPAddress(BYVAL hTCP AS LONG) AS STRING
   ;DIM sock_sa AS sockaddr_in
   ;DIM lpszIP AS ASCIIZ PTR
   FUNCTION=""
   IF getpeername(FILEATTR(hTCP,2),sock_sa,SIZEOF(sock_sa)) <> %SOCKET_ERROR THEN
      lpszIP = inet_ntoa(sock_sa.sin_addr.s_addr)
      FUNCTION = @lpszIp
   END IF
END FUNCTION

Ответить

Номер ответа: 11
Автор ответа:
 Андрей



ICQ:

Вопросов: 1
Ответов: 3
 Web-сайт: -
 Профиль | | #11
Добавлено: 02.12.06 21:05
Вот оно!!!!!!!!!!
(хотя уже наклепал через UDP, потом долко выё с перепутыванием последовательности пакетов)
огромное спасибо.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам