![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
у меня два приложения, клиент и сервер. при доключении к серверу мне необходимо определять с каково ИПшника подключается клиент....
каким образом это можно сделать. -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| dim |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 24.12.2002 Репутация: нет Всего: нет |
Функции accept() и WSAAccept() в качестве параметра принимают addr (тип sockaddr *) - в нем и будет IP.
--------------------
that's all |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
dim
sa_data после асепта содержит 52587 sa_family содержит бред как мне из этого получить ип -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| dim |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 24.12.2002 Репутация: нет Всего: нет |
sockaddr - это общее представление адреса для сокетов (потому что адреса могут принадлежать разным семействам протоколов - напр. AF_IPX, и т.д.). Для семейства AF_INET используется структура sockaddr_in (а sockaddr - это общее представление каждой из этих структур). Поэтому если ты работаешь c AF_INET тебе всегда надо использовать sockaddr_in, а где указываестся sockaddr, просто приводить указатели к sockaddr_in*. Т. е:
--------------------
that's all |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
я работаю с классами, асепт не принимет sockaddr_in в качестве параметра.
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| dim |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 24.12.2002 Репутация: нет Всего: нет |
Блин, так я же тебе говорю используй приведение типов и даже пример привел
--------------------
that's all |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
сдела как ты говориш, все равно муру возвращает
пример ты дал с ошибкой accept(s, (sockaddr_in *)&addr, &addrlen); -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| dim |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 24.12.2002 Репутация: нет Всего: нет |
Насчет муры так ты наверно в host byte order формат не переводишь: есть функции ntohl() и ntohs() для перевода в host byte order. Кроме того есть функция inet_ntoa() для перевода IP в символьный формат.
Это сообщение отредактировал(а) dim - 11.2.2003, 05:26 --------------------
that's all |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
dimМОЖЕТ ПРимер даш
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
поднимаю тему, помогите из sockaddr_in получить ИП адрес, ну не доходит до меня..
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| dim |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 24.12.2002 Репутация: нет Всего: нет |
Вот пример: консольная прога которая при запуске в качестве параметров принимает IP и порт на котором будет слушать. Когда ты коннектишься на ее IP и порт, то она выдает на консоль откуда произошел connection и закрывает его. Коннектиться можешь обычным telnet - ом.
--------------------
that's all |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
возвращает адрес 204.204.204.204 это ж бред или я ошибаюсь
-------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| dim |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 24.12.2002 Репутация: нет Всего: нет |
У меня - прекрасно работает. Расскажи что ты делаешь.
--------------------
that's all |
|||
|
||||
| Step |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5151 Регистрация: 26.9.2002 Где: дурдом.UA Репутация: 5 Всего: 25 |
CSocket a;
CSocket b; вообщето они производные у меня это так пример a.create(2020); a.listen(); CSocket::onaccept(...) { sockaddr_in e Accept(&b,(sockaddr*)&e); // здесь просматриваю результат подключения и вижу 204.204.204.204 } -------------------- - Дурак учится на своих ошибках, умный на чужих. - умные учатся у дураков |
|||
|
||||
| dim |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 106 Регистрация: 24.12.2002 Репутация: нет Всего: нет |
Ну дак ведь ты самый интерсный участок пропустил, написав вместо него
--------------------
that's all |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |