Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.96/25: Рейтинг темы: голосов - 25, средняя оценка - 4.96
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127

ResultSet отправить через сокет

13.02.2014, 15:56. Показов 5521. Ответов 52
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Вот такое дело... Есть клиент, есть сервер, клиент подключился к серверу и спросил:
T-SQL
1
select * from database_1
Сервер взял такой, выполнил все, и получил содержимое БД (одну таблицу с несколькими полями). Хочется только теперь отправить этот резулсет клиенту, и там красиво отресовать эту таблицу в GUI. Проблема в том, что я нублю и не понимаю, как отправить этот самый резулсет клиенту (((

До того, как дошел до этой проблемы, общался клиент с сервером через сокет вот так:
Сервер:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//***********************************************
//**************Старт сервера********************
//***********************************************
 
import java.net.InetAddress;
import java.net.ServerSocket;
 
 
public class ServerManager {
    
    public static void StartServer(){
        
        try{
            
            int conCounter = 0; //Счетчик
            
            ServerSocket server = new ServerSocket(3128, 0,
                    InetAddress.getByName("localhost"));
 
            System.out.println("Server is started");
 
            while(true)
            {
                new Server(conCounter, server.accept());
                conCounter++;
            }
            
        }catch(Exception e)
        {System.out.println("init error: "+e);}
        
    }
 
}
И собственно само общение:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.Socket;
 
import javax.swing.*;
 
import java.awt.*;
 
 
public class Server extends Thread {
 
    private Socket serversocket;
    private int num;
    
    public Server(int num, Socket s)
    {
        this.num = num;
        this.serversocket = s;
        
        setDaemon(true);
        setPriority(NORM_PRIORITY);
        start();
    }
    
    public void run(){
        
        try{
            
            InputStream sin = serversocket.getInputStream();
            OutputStream sout = serversocket.getOutputStream();
            
            DataInputStream in = new DataInputStream(sin);
            DataOutputStream out = new DataOutputStream(sout);
            
            String line = null;
            line = in.readUTF();
            
            System.out.println("Зашел клиент с ником: " + line);
            //sleep(5000);
            /*JOptionPane.showMessageDialog(null,
                    " Введен неверный логин или пароль!" +
            "\n Перезапустите преложение и повторите ввод!",
                    "Ошибка авторизации",
                    JOptionPane.ERROR_MESSAGE);
        
            */System.out.println("1234");
            //new GUI("Заголовок");
            
        }catch(Exception e)
        {System.out.println("init error: "+e);}
        
    }
    
}
А клиент делал следующие:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 int serverPort = 3128; 
         String address = "127.0.0.1";
         
         try{
             
             InetAddress ipAddress = InetAddress.getByName(address); 
             Socket socket = new Socket(ipAddress, serverPort); 
             
             OutputStream sout = socket.getOutputStream();
             DataOutputStream out = new DataOutputStream(sout);
             
             String line = null;
             line = message.getLogin();
             out.writeUTF(line);
             out.flush();
             
         } catch (Exception x) {
                x.printStackTrace();
         }
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.02.2014, 15:56
Ответы с готовыми решениями:

XOR- шифрование и передача через сокет
Здравствуйте. Мне я сделал клиент, сервер, в клиенте есть метод для шифровки, а в серверном приложении- для дешифровки. В клиенте нужно...

Отправить GET запрос через сокет
Нужно сохранить картинку полученную с помощью гет запроса через команду: ./clientTCP https://i.**********/5dprNTj.jpg > img.jpg ...

Как отправить экземпляр структуры через сокет?
У меня есть определенная структура пакета, но я не понимаю, как по ней слать сам пакет.. Структура: 857 BattleStart { int...

52
]:->
 Аватар для dan41k
102 / 96 / 19
Регистрация: 12.11.2013
Сообщений: 398
13.02.2014, 16:08
а если записать результаты запроса куда-нибудь в Collection, а потом просто считывать с него и отправлять?
1
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
13.02.2014, 16:13  [ТС]
Цитата Сообщение от dan41k Посмотреть сообщение
а если записать результаты запроса куда-нибудь в Collection, а потом просто считывать с него и отправлять?
Вот что делать я пытался:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public static void tableOfBD(){
        
        try
        {
            String Query = "select * from database_1";
            Statement stmt = con.createStatement();
            rs = stmt.executeQuery(Query);
            dataModel.SetData(rs);
            //System.out.println("get select all");
        }
        catch (SQLException e)
        {
            System.out.println("cant get select all");
        }
        
    }
Делаю запрос, получаю резулсет и после этого я составляю из этого резулсета табличку, которую и нужно отправить... вот тут я отправляю резулсет на то, чтоб сделать таблицу:
Java
1
dataModel.SetData(rs);
dataModel приводить нет смысла, там просто формируется таблица.

Потом пытался что то сделать типа отправки вот так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
public static void Otpravka() throws IOException{
 
        ServerSocket servers = null;
         try {
           servers = new ServerSocket(3129);
         } catch (IOException e) {
           System.out.println("Couldn't listen to port 4444");
           System.exit(-1);
         }
         
         Socket fromclient;
         try {
           System.out.print("Ждем клиента");
           fromclient= servers.accept();
           System.out.println("Клиент готов получить БД");
           
           BufferedReader in;
           PrintWriter    out;
           in=new BufferedReader(new 
            InputStreamReader(fromclient.getInputStream())); 
           out = new PrintWriter(fromclient.getOutputStream(),true);
           
           out.writeUTF(dataModel.SetData(rs));
             out.flush();
           
         } catch (IOException e) {
           System.out.println("Can't accept");
           System.exit(-1);
         }
        
    }
Но это шлак получился какой то...
0
13.02.2014, 16:19

Не по теме:

Result - резалт;D

1
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
13.02.2014, 16:20  [ТС]
Цитата Сообщение от _Den_ Посмотреть сообщение
Не по теме:
Result - резалт
Хорошо, я запомню ) Полезная информация, хоть и не по теме )

Добавлено через 26 секунд
Цитата Сообщение от Apelsin199 Посмотреть сообщение
Java
1
2
out.writeUTF(dataModel.SetData(rs));
  out.flush()
;
Тут у меня собственно ошибка...
0
 Аватар для _Den_
161 / 157 / 29
Регистрация: 21.09.2013
Сообщений: 487
Записей в блоге: 2
13.02.2014, 16:27
out.writeUTF(dataModel.SetData(rs));
writeUTF должен принимать String, а не тип ResultSet, я так понимаю у вас ошибка синтаксиса, еще до компиляции?
1
]:->
 Аватар для dan41k
102 / 96 / 19
Регистрация: 12.11.2013
Сообщений: 398
13.02.2014, 16:30
я честно в PrintWriter вообще метода writeUTF не наблюдаю
1
 Аватар для _Den_
161 / 157 / 29
Регистрация: 21.09.2013
Сообщений: 487
Записей в блоге: 2
13.02.2014, 16:33
Цитата Сообщение от dan41k Посмотреть сообщение
я честно в PrintWriter вообще метода writeUTF не наблюдаю
Гг, тем более)

Добавлено через 42 секунды
Apelsin199, используйте интегрированную среду разработки. В чём код то пишете?
1
]:->
 Аватар для dan41k
102 / 96 / 19
Регистрация: 12.11.2013
Сообщений: 398
13.02.2014, 16:34
что возвращает этот метод?

Java
1
dataModel.SetData(rs)
1
 Аватар для _Den_
161 / 157 / 29
Регистрация: 21.09.2013
Сообщений: 487
Записей в блоге: 2
13.02.2014, 16:35
Цитата Сообщение от dan41k Посмотреть сообщение
что возвращает этот метод?
Так как он Set то сомневаюсь, что он не void
1
]:->
 Аватар для dan41k
102 / 96 / 19
Регистрация: 12.11.2013
Сообщений: 398
13.02.2014, 16:39
Цитата Сообщение от _Den_ Посмотреть сообщение
Так как он Set то сомневаюсь, что он не void
вот-вот. Мне что-то кажется, что так оно и есть. Тогда на вход - ничего? Я думаю, что записать результаты ResultSet-a лучше в какой-нить массив или что-нибудь другое, а потом на основе этого отправлять клиенту
1
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
13.02.2014, 16:43  [ТС]
Цитата Сообщение от _Den_ Посмотреть сообщение
writeUTF должен принимать String, а не тип ResultSet, я так понимаю у вас ошибка синтаксиса, еще до компиляции?
Вы все правильно понимаете)

Добавлено через 51 секунду
Цитата Сообщение от _Den_ Посмотреть сообщение
Apelsin199, используйте интегрированную среду разработки. В чём код то пишете?
Eclips )
0
 Аватар для _Den_
161 / 157 / 29
Регистрация: 21.09.2013
Сообщений: 487
Записей в блоге: 2
13.02.2014, 16:44
Цитата Сообщение от dan41k Посмотреть сообщение
Тогда на вход - ничего? Я думаю, что записать результаты ResultSet-a лучше в какой-нить массив или что-нибудь другое, а потом на основе этого отправлять клиенту
Да ничего. Так и есть, ResultSet на клиентской стороне не нужен думаю, с клиента только стринговые запросы посылать. А с сервера уже данные, только что это будут за данные вопрос, да и как их по сети отправить тоже.

Добавлено через 1 минуту
Цитата Сообщение от Apelsin199 Посмотреть сообщение
Eclips )
И что Eclipse разве не говорит что у PrintWritera нет метода writeUTF() ?
1
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
13.02.2014, 16:45  [ТС]
Цитата Сообщение от dan41k Посмотреть сообщение
что возвращает этот метод?
Java
1
2
3
4
public static DBTableModel getDataModel()
    {
        return dataModel;
    }
Вообще, он возвращает уже готовую и красивую таблицу, которую я и хочу отправить и отобразить у клиента в GUI.
0
]:->
 Аватар для dan41k
102 / 96 / 19
Регистрация: 12.11.2013
Сообщений: 398
13.02.2014, 16:47
Цитата Сообщение от Apelsin199 Посмотреть сообщение
Вообще, он возвращает уже готовую и красивую таблицу, которую я и хочу отправить и отобразить у клиента в GUI.
Вообще, это возвращает метод getDataModel() а не SetData()

Добавлено через 1 минуту
и вообще строй таблицу на стороне клиента. Сервер вытягивает информацию - отправляет ее клиенту как стринги - клиент принимает - строит таблицу
1
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
13.02.2014, 16:49  [ТС]
Цитата Сообщение от _Den_ Посмотреть сообщение
И что Eclipse разве не говорит что у PrintWritera нет метода writeUTF() ?
Java
1
2
3
4
             String line = null;
             line = message.getLogin();
             out.writeUTF(line);
             out.flush();
Таким образом я отправил на сервер строку, там она пришла и все хорошо было. Или я вас не понял?

Добавлено через 1 минуту
Цитата Сообщение от dan41k Посмотреть сообщение
и вообще строй таблицу на стороне клиента. Сервер вытягивает информацию - отправляет ее клиенту как стринги - клиент принимает - строит таблицу
То есть, получаю:
Java
1
2
3
String Query = "select * from database_1";
            Statement stmt = con.createStatement();
            rs = stmt.executeQuery(Query);
И отправляю пользователю rs? а там уже из этого строю таблицу и отображаю её?
0
 Аватар для _Den_
161 / 157 / 29
Регистрация: 21.09.2013
Сообщений: 487
Записей в блоге: 2
13.02.2014, 16:50
Java
1
2
3
4
5
6
7
PrintWriter    out;
           in=new BufferedReader(new 
            InputStreamReader(fromclient.getInputStream())); 
           out = new PrintWriter(fromclient.getOutputStream(),true);
           
           out.writeUTF(dataModel.SetData(rs));
             out.flush();
1
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
13.02.2014, 16:53  [ТС]
Цитата Сообщение от dan41k Посмотреть сообщение
Вообще, это возвращает метод getDataModel() а не SetData()
SetData void, вы правы ))

Добавлено через 2 минуты
Цитата Сообщение от _Den_ Посмотреть сообщение
Java
1
2
3
4
5
6
7
PrintWriter    out;
           in=new BufferedReader(new 
            InputStreamReader(fromclient.getInputStream())); 
           out = new PrintWriter(fromclient.getOutputStream(),true);
           
           out.writeUTF(dataModel.SetData(rs));
             out.flush();
Я вас понял, нублю )
0
]:->
 Аватар для dan41k
102 / 96 / 19
Регистрация: 12.11.2013
Сообщений: 398
13.02.2014, 16:53
Цитата Сообщение от Apelsin199 Посмотреть сообщение
И отправляю пользователю rs? а там уже из этого строю таблицу и отображаю её?
надо, наверное, ждать гуру) они подскажут) Но мне кажется, что rs нельзя отправить...надо с него считывать и считанное уже кидать!
1
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
13.02.2014, 16:54  [ТС]
Цитата Сообщение от dan41k Посмотреть сообщение
надо, наверное, ждать гуру) они подскажут) Но мне кажется, что rs нельзя отправить...надо с него считывать и считанное уже кидать!
Хорошо, google мне в помощь ) Спасибо )
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.02.2014, 16:54
Помогаю со студенческими работами здесь

Отправить сериализованный объект через сокет по UDP
Доброй ночи, уважаемые форумчане! Нужна консультация по отправке сериализованного объекта по UDP-протоколу (размер файла невелик, файл...

Как отправить данные на url через сокет и получить ответ
Подскажите пожалуйста как отправить данные на url и получить ответ, а то у меня что то не очень хорошо получается. Заранее благодарю.

ftp через сокет 5
подскажите пожалуйста компанент для работы с ftp с возможностью работы через прокси сокет5 или как организовать этот доступ.

Посылка файлов через сокет
Здравствуйте! Подскажите, как реализовать в RAD Studio 2010 следующую процедуру: procedure SendFileBySocket(filename: string); Это...

Работа с программой через сокет
Всем привет. Мне нужно работать через php в программой в моем случае (telnet) и суть в том что мне нужно ввести в этой программе несколько...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит переходные токи и напряжения на элементах схемы. . . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru