Страница: 1 |
Страница: 1 |
Вопрос: TCP OPEN SERVER PORT - кто стучится в дверь моя
Добавлено: 20.03.06 21:04
Автор вопроса: Андрей | Web-сайт:
Есть такая замечательная конструкция:
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-сайт:
Профиль | | #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-сайт:
Профиль | | #6
Добавлено: 21.03.06 22:36
Номер ответа: 7
Автор ответа:
Андрей
ICQ: -
Вопросов: 1
Ответов: 3
Web-сайт:
Профиль | | #7
Добавлено: 22.03.06 14:36
>>Может вообще не получать, если передает вместо указателя на нее NULL
Но вроде из декларации, в функцию удодит сама структура, а не указатель на неё(или я не вьезжаю)?
Номер ответа: 8
Автор ответа:
Sharp
Лидер форума
ICQ: 216865379
Вопросов: 106
Ответов: 9979
Web-сайт:
Профиль | | #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
' [in] hTCP - PB-шный хандл сокета [out]- IP as string
FUNCTION TCPGetIPAddress(BYVAL hTCP AS LONG) AS STRING
 IM sock_sa AS sockaddr_in
 IM 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, потом долко выё с перепутыванием последовательности пакетов)
огромное спасибо.