| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java: Работа с сетью > Клиент - сервер |
| Автор: Samotnik 1.10.2007, 18:00 |
| Нуно написать прогу, "Клиент - сервер" с ипользованием БД. Значицца JDBC знаю хорошо (с этим проблем не будет). Но вот проблема с "клиент - сервером", не понимаю, как следует организовать работу. Нуно сделать что то типа: Клиент (имеет GUI интерфейс) посылает запрос на сервер, тот в сою очередь берет данные из БД и отсылает назад. Ток как это реализовать - понятия не имею!!! Хотелось бы чтоб подсказали, каким образом, серверу (кот берет данные из БД) передать эти данные клиенту, и отобразить в красивой Свинговской таблице?!?!?!? Если не сложно, выложите плз пример кода, кот демонстрирует, простейший обмен между клиентом и сервером в GUI интерфейсе !!! |
| Автор: nornad 2.10.2007, 02:25 |
| У тебя простая клиент-серверная модель? Тогда всё просто. Клиентская часть всё рисует и даёт изменять, а данные берёт и кладёт через обращение к серверу. Серверная часть тупо сидит и ждёт, чего ей прикажут. Приказали выдать некие данные - лезет в БД и выдаёт. Приказали записать - пишет. Общение между двумя частями реализовать можно по-разному. Тут тебе и сокеты, и пайпы, и флопинет, и соап, и много чего ещё можно придумать. Даже тупо через работу с файлом можно реализовать. Выбор обычно либо заранее определяется требованиями заказчика, либо производится исходя из имеющихся возможностей и знаний. Добавлено через 1 минуту и 14 секунд Инициатор общения в 99% - клиент (изредка требуется реализовать возможность синхронизации неких кешируемых данных на различных клиентах - тогда инициатором выступает сервер). |
| Автор: Samotnik 2.10.2007, 11:19 |
А на этом если можно по-подробнее . Я се так представляю: Сервер берет данные из базы, записывает в одну переменную (с разделителями), пересылает на клиент, тот в свою очередь через StringTokenizer разделяет обратно и записывает в JTable . Так?? Иль схема иная??? |
| Автор: nornad 2.10.2007, 11:39 |
| С сокетами я ни разу не работал, поэтому ничего про них не скажу. А вот по поводу пересылки - да, приведённый тобою вариант является одним из возможных. Я бы только все значения сначала прогнал через base64, чтобы в них не встречалось тех же разделителей и других потенциально опасных символов. |
| Автор: _Michael 2.10.2007, 21:26 | ||||||
так там нет ничего сложного с сокетами. на сервере создаеш ServerSocket. а на клиенте просто Socket и все. Вот куски кода клиента. уже их повставляеш куда надо и как будет угодно
аналогично используеш out для записи в сокет. С серверСокетом думаю проблем не будет. аналогично как с клиентским, только хоста не надо указывать, просто
|
| Автор: Samotnik 3.10.2007, 00:15 |
| А с многопоточностью, как быть? (Много клиентов типа должно быть !) |
| Автор: _Michael 3.10.2007, 09:27 |
| ну ето не знаю. ты сначала реализуй для одного клиента чтоб работало корректно. А потом запусти два или три клиента одновременно посмотри что будет. и уже потом будем разбираться. |
| Автор: Maverick 3.10.2007, 12:37 |
| а на фига это все вручную писать? 21 век на дворе... существуют веб-сервера, сервлет- ежб- контейнеры... ?? зачем писать все на таком низком уровне??? |
| Автор: Samotnik 3.10.2007, 12:49 | ||
Потому что задание такое!!! |
| Автор: _Michael 3.10.2007, 13:08 |
| Автор: v2v 3.10.2007, 14:50 | ||
| всё просто. недавно такое же задание делал ))) значиццо так: заходишь в Ява Альманах и смотришь 4 примера: 1) http://www.exampledepot.com/egs/java.net/CreateServerSocket.html 2) http://www.exampledepot.com/egs/java.net/CreateClientSocket.html?l=rel 3) http://www.exampledepot.com/egs/java.net/ReadFromSocket.html?l=rel 4) http://www.exampledepot.com/egs/java.net/WriteTextToSocket.html?l=rel Многопоточность тебе надо будет делать в примере 1. Вот так:
В функции WORKWITHKLIENT реализовываешь примеры 3 и 4. Вот и всё)) |
| Автор: _Michael 3.10.2007, 18:09 |
| v2v, отличный пример |
| Автор: v2v 3.10.2007, 21:36 |
| _Michael, это можно отмечать в репутации |
| Автор: jsse 7.10.2007, 23:41 | ||||
| Можно сделать client-server на http://ws.apache.org/xmlrpc/, многопоточность, простота использования. Но простота жертвуется производительностью, т.к. для отправки запроса и получения ответа формируется xml документ который занимает 80% ответа. При небольшом объеме обмена данных и скоростном соединении это не ощущается. Работает просто - клиент вызывает ф-цию на сервере и получает ответ. // SERVER
В качестве аргумента можно передавать как простые типы так и массивы, HashMap. |
| Автор: dotSquid 3.12.2007, 23:42 |
| Юзаю этот apache xmlrpc, но сервер какой-то однозадачный. Если одновременно обращаются два клиента, то обслуживаются они последовательно. Как лечить? |
| Автор: dotSquid 4.12.2007, 22:01 |
| Товарищи, очень прошу помощи. В этой теме разбираюсь плохо, и разбираться в сути времени нет, а нужно скоро сдавать проект. |
| Автор: LSD 5.12.2007, 13:53 |
| Судя по всему xml-rpc поддерживает многопоточность. Твои методы нигде не используют synchronized? |
| Автор: dotSquid 5.12.2007, 20:47 |
| Убейте меня ржавой консервной банкой, действительно, тупанул с synchronized. Огромное спасибо за то, что открыл глаза |
| Автор: CrasyMen 25.4.2009, 21:38 |
| Samotnik, поделись исходником, плз. Буду премного благодарен. |