![]() |
Модераторы: feodorv |
![]() ![]() ![]() |
|
Sergio |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: нет Всего: 1 |
Здраствуйте. Хочу продолжить тему по ТСП протоколу. Вот моя функция которая создаёт сокет:
Что то с биндом не так.. ![]() error C2660: 'bind' : function does not take 2 arguments Спасибо. P.S. htonl(INADDR_ANY) что это? ![]() Это сообщение отредактировал(а) Sergio - 21.1.2007, 00:32 |
|||
|
||||
nworm |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: нет Всего: 8 |
![]() |
||||
|
|||||
Romikgy |
|
|||
![]() Любитель-программер ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 7326 Регистрация: 11.5.2005 Где: Porto Franco Odes sa Репутация: нет Всего: 146 |
-------------------- Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. ![]() |
|||
|
||||
nworm |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: нет Всего: 8 |
||||
|
||||
Sergio |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: нет Всего: 1 |
nworm, вот написал так:
Ошибка: error C2143: syntax error : missing ')' before ';' |
|||
|
||||
nworm |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 502 Регистрация: 22.10.2005 Репутация: нет Всего: 8 |
пробый так
|
|||
|
||||
SparF |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 387 Регистрация: 14.9.2006 Где: Санкт-Петербург/М осква Репутация: нет Всего: 18 |
ну так он тебе и написал:
"Поставь, пожалуйста, скобку перед ;" ))) -------------------- Люди, не пользуйтесь пиратским программным обеспечением - переходите на Linux! |
|||
|
||||
Sergio |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: нет Всего: 1 |
Хотел проверить возращаемые ошибки Вызвал две "прослушки" сразу но они вернули два нуля. Почему? А должно ведь вернуть ноль и значение ошибки.
|
|||
|
||||
SparF |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 387 Регистрация: 14.9.2006 Где: Санкт-Петербург/М осква Репутация: нет Всего: 18 |
Sergio, а почему обязательно ошибку?
вот, что в man listen сказано
-------------------- Люди, не пользуйтесь пиратским программным обеспечением - переходите на Linux! |
|||
|
||||
Sergio |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: нет Всего: 1 |
Есть ещё такое возращение:
|
|||
|
||||
SparF |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 387 Регистрация: 14.9.2006 Где: Санкт-Петербург/М осква Репутация: нет Всего: 18 |
сейчас посмотрим
Это сообщение отредактировал(а) SparF - 21.1.2007, 09:33 -------------------- Люди, не пользуйтесь пиратским программным обеспечением - переходите на Linux! |
|||
|
||||
SparF |
|
||||||||||||||||||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 387 Регистрация: 14.9.2006 Где: Санкт-Петербург/М осква Репутация: нет Всего: 18 |
Sergio, а ты под какую ОС пишешь? Я про то, что в мсдн нашел про WSAEISCONN =)
а потом решил покопаться в Линухе на эту тему, результаты меня не только откровенно порадовали, но еще и удивили :hehe - зацепило)) 1. в Линухе как факт отсутствует ошибка WSAEISCONN, а есть EISCONN 2. EISCONN вызывается в случае: для функции connect:
аналогично для send_msg:
И других вариантов встретить его в socket.c нет :p 3. сам же код ошибки (Linux/include/asm-generic/errno.h)
4. Что же касается работы конкретно функции listen то вызывается одна из asmlinkage long sys_socketcall(Linux/net/socket.c), как и полностью все функции работы с сокетами вот кусок кода (нас интересуют возвращаемые ошибки)
по возможным ошибкам: (include/asm-generic/errno-base.h)
с первой ошибкой тут все ясно(первая - в порядке проверки, а не объявления в errno-base.h)) вторая же возникает если некорректно отрабатывает копирование блока данных из пространства пользователя (тоже вряд ли имеет отношение к нашему вопросу ))) если смотреть дальше по коду(Linux/kernel/auditsc.c), то единсвенное, что может вернуть audit_socketcall это
значит нам опять же не сюда))) остается только одна функция, которая как-то может повлиять на ошибку: sys_listen (net/socket.c, line 1362) она совсем маленькая:
тут только два варианта, откуда может появиться ошибка первый: security_socket_listen (include/linux/security.h, line 2703)
по комменту понятно - проверяет права на доступ (опять же - похоже, что "не та степь" по отношению к нашему вопросу) второй: (net/tipc/socket.c, line 1299):
как видишь она может вернуть только две ошибки (include/asm-generic/errno.h, line 68):
это была первая, EINVAL описана выше. при этом первая вызывается если sock->state== (Linux/net/tipc/socket.c):
по комменту ясно, что это "если сокет (в силу каких-то причин) не может быть подключен" а вторая если sock->state!= (Linux/include/linux/net.h)
опять же по комменту видно, что если сокет уже к чему-то подключен Коды ошибок, указанных мной ранее из мана в коде listen я так и не нашел - люди, не судите строго :rolleyes Так что, имхо, не все так просто, как хотелось бы, но и усложнять лишний раз не надо. Думаю, что этого достаточно, чтобы понять: в зависимости от ОС реализация вроде бы "стандартных" функций может меняться))) как же это сделано в винде - а хз)) не знаю ( PS http://lxr.linux.no/ однозначно рулит :inlove ковырялся в исходниках 2.6.17.13 гы...прикольно :happy
Так что забей ))) исходить надо из того, что есть если же пишешь под винду - то тайна остается покрыта мраком :( тут надо спрашивать у продвинутых виндузойдов, коим я не являюсь :( А, вот еще - на опытных прогах я все это не проверял, возможно, что в реальности еще что-то накладывается. Это сообщение отредактировал(а) SparF - 21.1.2007, 11:01 -------------------- Люди, не пользуйтесь пиратским программным обеспечением - переходите на Linux! |
||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||
drZmeu |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 183 Регистрация: 22.11.2006 Репутация: 1 Всего: 1 |
Народ да посоветуйте ему книжку какую нить...
Sergio -> С++ Глазами хакера... В нете скачай примерный вес 3 мегобайта... Там много чего про сокеты и т.д Удачи тебе. --------------------
[code=html]<table bgcolor='#0' width='69'><tr align='center' bgcolor='#0'><td><font size='6' face='cursive' color='#ffffff'><b>A</b></font></td></tr><tr align="center" bgcolor="#0">[/code] |
|||
|
||||
SparF |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 387 Регистрация: 14.9.2006 Где: Санкт-Петербург/М осква Репутация: нет Всего: 18 |
мда....а то я что-то размахнулся....
вот ссылка, которая меня ну очень в свое время порадовала (вообще класс!) http://beej.us/guide/bgnet/ -------------------- Люди, не пользуйтесь пиратским программным обеспечением - переходите на Linux! |
|||
|
||||
Sergio |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 843 Регистрация: 28.7.2006 Где: Solar System-> Earth Репутация: нет Всего: 1 |
Почитал я книгу. И вот что у меня получилось (не очень получилось
![]()
Простите за нечитабельность(писал в 4 утра). SparF, я пишу под виндовс. P.S. Подскажите где в структуре sockaddr_in указывается IP. Спасибо зарание. |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |