219 / 125 / 99
Регистрация: 14.03.2011
Сообщений: 628
|
||||||
1 | ||||||
Обработка ошибки27.09.2012, 11:57. Показов 4695. Ответов 14
Метки нет (Все метки)
Такая возникла проблема.
по умолчанию порт у сервера 10001, а у клиента 10000. Пыталась сделать, чтобы если порт у сервера занят уже, то поменять значения портов наоборот. но проблема в том, что если это сделать, все равно вылетает ошибка Could not bind socket. Address and port are already in use. Причем если при обработке указать два совсем других порта (которые не заняты) все равно после обработки исключительной ситуации возникает эта же ошибка.
0
|
27.09.2012, 11:57 | |
Ответы с готовыми решениями:
14
Обработка ошибки в Клиент - Серверном приложении При повторном появлении ошибки обработка ошибки не срабатывает Обработка ошибки обработка ошибки |
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
27.09.2012, 12:18 | 2 |
Зачем вообще в одном и том же приложении понадобился и сервер и клиент ?
В случае udp вполне достатно одного - либо сервера либо клиента.
0
|
219 / 125 / 99
Регистрация: 14.03.2011
Сообщений: 628
|
|
27.09.2012, 13:20 [ТС] | 3 |
mss, для передачи звука.
насколько мне известно (может быть плохо известно) клиент принимать не может. А мне надо в двух направлениях. что-то типа голосового чата. Один пользователь выбирает из базы, которая хранит все IP адреса, адресата и звонит ему. Тот в совю очередь может ответить, сбросить, либо быть занят. В одном направлении не проблем нету сделать, а для двух сделала так. просто по другому как сделать ума не приложу. Со всем этим впервые имею дело.
0
|
210 / 169 / 24
Регистрация: 24.04.2012
Сообщений: 615
|
|
27.09.2012, 13:49 | 4 |
И кем же он уже занят? И смысл менять, тогда клиент не сможет занять этот порт и опять исключение.
По UDP никто никуда не подключается. Пакет шлется на адрес и порт, а открыт на том адресе тот порт или нет и дошел ли вообще пакет никого не волнует.
0
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
27.09.2012, 13:57 | 5 |
Может. И в TCP и в UDP.
Принципиальная разница лишь в том что в TCP инициатором подключения может являться только клиент, но не сервер. А в UDP понятие "подключение" отсутствует в принципе.
0
|
219 / 125 / 99
Регистрация: 14.03.2011
Сообщений: 628
|
|
27.09.2012, 19:35 [ТС] | 6 |
а откуда тогда ошибка Could not bind socket. Address and port are already in use??
Добавлено через 52 секунды просто тогда придется разграничивать,что на одном запускается клиент, а на другом сервер. это удобно если два компьютера. а если больше?
0
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
27.09.2012, 20:36 | 7 |
0
|
219 / 125 / 99
Регистрация: 14.03.2011
Сообщений: 628
|
|
27.09.2012, 20:45 [ТС] | 8 |
хорошо, что Вы в этом прекрасно разбираетесь. люди мне кажется тут за помощью обращаются.
место того, чтобы вот такие реплики высказывать, можно просто помочь или что-нибудь посоветовать, если видите, что человек не может разобраться.
1
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
27.09.2012, 21:03 | 9 |
Я УЖЕ посоветовал - выкинь из воего приложения либо IdUDPClient либо IdUDPServer.
Заявленная тобой функциональность приложения ничуть не пострадает, при этом идея-фикс "поменять значения портов наоборот" рассосется сама собой.
0
|
219 / 125 / 99
Регистрация: 14.03.2011
Сообщений: 628
|
|
27.09.2012, 22:42 [ТС] | 10 |
mss, ты сказал, что вполне хватит. после этого я сказала для чего мне это надо и больше ты ничего вразумительного по этому поводу не сказал.
будь так добр, объясни каким образом это организовать. Клиент-сервер? клиент-клиент? или как? я обратилась просто за помощью. Я не прошу для меня ничего писать, просто хочу разобраться. как заставить принимать данные клиенту? я этого просто не понимаю.
0
|
210 / 169 / 24
Регистрация: 24.04.2012
Сообщений: 615
|
|
28.09.2012, 00:33 | 11 |
Кладешь на форму IdUDPServer1, чтобы послать пакет вызываешь IdUDPServer1.Send(); , принимаешь процедурой IdUDPServer1UDPRead.
1
|
219 / 125 / 99
Регистрация: 14.03.2011
Сообщений: 628
|
|
28.09.2012, 11:00 [ТС] | 12 |
Nutserus, ага.
порты должны же быть одинаковые? так? просто тут самая проблемка, что если порты одинаковые, то вылазит ошибка и компонент не становится активным. или я чего-то не понимаю... если пытаюсь отправлять сервером и принимать сервером, то вылазит ошибка "Socket Error #10054 Connection reset by peer" Добавлено через 34 минуты и плюс, даже если отправлять простое сообщение, а не буффер, то OnRead все равно не реагирует...
0
|
210 / 169 / 24
Регистрация: 24.04.2012
Сообщений: 615
|
|
28.09.2012, 11:53 | 13 |
Одинаковые с чем? У тебя один компонент и один порт.
Я конечно понимаю, читать сдк скучно и неинтересно, сразу хочется руками потрогать, тогда почему бы не скачать готовый исходник и пилить его под себя? Идея неновая и реализаций ее множество.
0
|
219 / 125 / 99
Регистрация: 14.03.2011
Сообщений: 628
|
|
28.09.2012, 12:12 [ТС] | 14 |
искала исходники. в одном направлении клиент-сервер есть и много, а сервер-сервер например ни разу не встретила тоже самое как клиент-клиент.
искала, читала статьи по созданию таких приложений, только все что не попадались были клиент-сервер и в одну сторону.
0
|
3530 / 2270 / 279
Регистрация: 24.12.2010
Сообщений: 13,723
|
|
28.09.2012, 19:02 | 15 |
У udp-компонента, в твоем случае например TIdUDPClient, есть методы приема и есть методы передачи данных.
В соответствии с протоколом инф.обмена в каждый момент времени один из партнеров по обмену передает данные (вызывает методы передачи), другой ожидает и принимает эти данные (вызывает методы приема). Вот и всё. И никаких коннектов, серверов, клиентов. Т.е. обе стороны обмена инициируют свои компоненты, занимая каждый свой порт, естественно свободный и заранее известный партнеру. Передающая сторона указывает адрес-порт принимающей и передает ей сообщение. Получив сообщение другая сторона может зная адрес и порт партнера может точно таким же образом ответить. Вопросы прохождения NAT и файрволов здесь для простоты не рассматриваем - это отдельная песня, во много раз сложнееп твоей примитивной задачи.
1
|
28.09.2012, 19:02 | |
28.09.2012, 19:02 | |
Помогаю со студенческими работами здесь
15
Обработка ошибки Обработка ошибки Обработка ошибки Обработка ошибки Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |