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

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

13.02.2014, 15:56. Показов 5823. Ответов 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:56
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Apelsin199 Посмотреть сообщение
Хорошо, google мне в помощь ) Спасибо )
посмотри, как отправлять строки. А из rs я думаю ты инфу достанешь)
1
 Аватар для _Den_
161 / 157 / 29
Регистрация: 21.09.2013
Сообщений: 487
Записей в блоге: 2
13.02.2014, 16:59
Цитата Сообщение от dan41k Посмотреть сообщение
надо, наверное, ждать гуру) они подскажут) Но мне кажется, что rs нельзя отправить...надо с него считывать и считанное уже кидать!
Скорей всего так и есть. Но кидать пострингово это извращение кажется) Объекты передавать надо по сети, какой то протокол обмена объектами, не знаю, пока-что кроме текста ничего не отправлял по сети) Ждем гуру
1
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
13.02.2014, 22:13  [ТС]
Цитата Сообщение от _Den_ Посмотреть сообщение
Ждем гуру
Только когда же он зайдет... А я тут уже извращаюсь к стати ))
Вот что пытаюсь сделать....
Пытаюсь считать отдельно каждое число из колонок в БД и его отправить Но это как то стремно немного... ) Да и не работает еще...
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
String Query = "select * from database_1";
            Statement stmt = con.createStatement();
            rs = stmt.executeQuery(Query);
            while(rs.next()){
                int ID_Product = rs.getInt("a");
                String ProductName = rs.getString("b");
                int Start_Bid = rs.getInt("c");
                int TIME_Bit = rs.getInt("d");
                int ID_Klient = rs.getInt("i");
                int New_bid = rs.getInt("f");
                
                try{
                    
                    ServerSocket server = new ServerSocket(3127, 0,
                            InetAddress.getByName("localhost"));
                    server.accept();
                    
                    InputStream sin = serversocket.getInputStream();
                    OutputStream sout = serversocket.getOutputStream();
                    
                    DataInputStream in = new DataInputStream(sin);
                    DataOutputStream out = new DataOutputStream(sout);
                    
                    out.write(ID_Product);
                    out.writeUTF(ProductName);
                    out.write(Start_Bid);
                    out.write(TIME_Bit);
                    out.write(ID_Klient);
                    out.write(New_bid);
                    out.flush();
                    
                }catch(Exception e)
                {System.out.println("init error: "+e);}
            }
Добавлено через 23 минуты
Что то невероятный бред уже получается...
0
 Аватар для _Den_
161 / 157 / 29
Регистрация: 21.09.2013
Сообщений: 487
Записей в блоге: 2
13.02.2014, 22:29
Вы бы документацию почитывали. Я сомневаюсь что у вас в базе данных названия столбцов a,b,c,d,e...
Если в вашем запросе нет конструкции AS, которая переопределяет стандартное имя таблицы, то используйте метод не getInt(String arg) а getInt(int arg). Соответственно к порядку колонок в таблице вы используете getInt(int arg)
Java
1
2
3
4
5
6
       int ID_Product = rs.getInt(1);
                String ProductName = rs.getString(2);
                int Start_Bid = rs.getInt(3);
                int TIME_Bit = rs.getInt(4);
                int ID_Klient = rs.getInt(5);
                int New_bid = rs.getInt(6);
Если порядок другой в таблице то номера смените

Добавлено через 9 минут
А еще я у вас не вижу
Java
1
rs.close();
Добавлено через 3 минуты
и
Java
1
stmt.close();
1
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
14.02.2014, 13:32
Цитата Сообщение от _Den_ Посмотреть сообщение
Скорей всего так и есть. Но кидать пострингово это извращение кажется) Объекты передавать надо по сети, какой то протокол обмена объектами, не знаю, пока-что кроме текста ничего не отправлял по сети) Ждем гуру
Ну, теоретически можно так.

0. Вытащить из метаданных количество столбцов и их названия. Названия положить в List
1. Для каждой строки получать все значения в ней в порядке выборки в запросе (в цикле по номеру столбца). Значения выкладывать в отдельный List для данной строки
2. Всё вместе сложить в общий List - сначала названия, потом данные.
3. Через ObjectOutputStream сериализовать этот List и передать на сторону клиента
4. На стороне клиента через ObjectInputStream десериализовать List и получить полную структуру данных.

Метод примитивный, если не сказать тупой. Обычно так не делается. Автор, Вы какую задачу решаете? Вам зачем целиком ResultSet на клиента тащить? Вы хорошо представляете, сколько там может быть данных?
1
]:->
 Аватар для dan41k
102 / 96 / 19
Регистрация: 12.11.2013
Сообщений: 398
14.02.2014, 13:41
Цитата Сообщение от Skipy Посмотреть сообщение
0. Вытащить из метаданных количество столбцов и их названия. Названия положить в List
1. Для каждой строки получать все значения в ней в порядке выборки в запросе (в цикле по номеру столбца). Значения выкладывать в отдельный List для данной строки
2. Всё вместе сложить в общий List - сначала названия, потом данные.
т.е. это будет List List-ов?

Java
1
List<List<String>> l = new ArrayList<List<String>>();
а потом считать 1 элемент листа - как метаданные, а каждый следующий - строка из таблицы?

Цитата Сообщение от Skipy Посмотреть сообщение
Обычно так не делается
а как обычно делается, если нужно,к примеру, отобразить всю таблицу "Книги" из БД?
1
 Аватар для _Den_
161 / 157 / 29
Регистрация: 21.09.2013
Сообщений: 487
Записей в блоге: 2
14.02.2014, 13:49
Цитата Сообщение от Skipy Посмотреть сообщение
Метод примитивный, если не сказать тупой. Обычно так не делается.
А что тогда копать? Куда смотреть?
0
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
14.02.2014, 13:50  [ТС]
Цитата Сообщение от Skipy Посмотреть сообщение
Метод примитивный, если не сказать тупой. Обычно так не делается. Автор, Вы какую задачу решаете? Вам зачем целиком ResultSet на клиента тащить? Вы хорошо представляете, сколько там может быть данных?
Сколько там может быть данных? Конечно представляю и это много, с учетом, что придется часто обновлять БД у клиента (как только кто то сделал новую ставку например), то что я делаю, это плохо... очень очень плохо... Но я открыт для предложений и хочу оптимизировать тот "быдла-код" который сейчас есть )
Задача в следующем...
(Курсовой проект "Аукцион")
Есть клиент, есть сервер, клиент подключился к серверу и должен получить от сервера БД в виде таблице, чтоб я отрисовал эту таблицу в GUI пользователя. В последствии, клиент делает ставку, этот запрос посылается на сервер, устанавливается ставка и в ответ сервер обновляет у всех подключенных к серверу клиентов таблицу с товаром. Ну как то так, если не вдаваться в подробности )
0
 Аватар для _Den_
161 / 157 / 29
Регистрация: 21.09.2013
Сообщений: 487
Записей в блоге: 2
14.02.2014, 13:54
Цитата Сообщение от Apelsin199 Посмотреть сообщение
должен получить от сервера БД в виде таблице, чтоб я отрисовал эту таблицу в GUI пользователя
Смотрите, SELECT * вытягивает все данные из таблицы, пользователю не надо знать ключи таблицы, по этому нужно делать выборку по параметрам, а не всё вместе. Дальше использовать JTable, что идеально подходит для вывода данных с БД. Всю таблицу целиком конечно не выгодно передавать, надо бы как-то по частям думаю, хотя кто знает
1
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
14.02.2014, 13:58
Цитата Сообщение от _Den_ Посмотреть сообщение
А что тогда копать? Куда смотреть?
1. Типизация строк запроса
2. Постраничная загрузка
3. Фильтрация по параметрам
4. Инкрементальное обновление
1
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
14.02.2014, 14:00  [ТС]
Цитата Сообщение от _Den_ Посмотреть сообщение
Смотрите, SELECT * вытягивает все данные из таблицы, пользователю не надо знать ключи таблицы, по этому нужно делать выборку по параметрам, а не всё вместе. Дальше использовать JTable, что идеально подходит для вывода данных с БД. Всю таблицу целиком конечно не выгодно передавать, надо бы как-то по частям думаю, хотя кто знает
Я попробую сделать то, что Вы посоветовали )
Просто раньше у меня был вот такой класс:
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Timestamp;
import java.sql.Types;
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
 
 
public class DBTableModel extends AbstractTableModel
{
    // date 
    private ArrayList<String> date;
    // columns names
    private ArrayList<String> columns;
    // columns count
    private int colCount;
    // rows count
    private int rowCount;
    
    
    public DBTableModel() 
    {
        date = new ArrayList<String>();
        columns = new ArrayList<String>();
        colCount = 0;
        rowCount = 0;
    }
    
    public void Clear()
    {
        date.clear();
        columns.clear();
    colCount = 0;
    rowCount = 0;
    }
    
    public void SetData(ResultSet rs) throws SQLException
    {
    Clear();
        ResultSetMetaData dbMeta = rs.getMetaData();
        colCount = dbMeta.getColumnCount();
        for (int i = 1; i <= colCount; i++)
        {
            String columnName = dbMeta.getColumnLabel(i);
            columns.add(columnName);
        }
        while (rs.next())
        {
            rowCount++;
            for(int columnCount = 1; columnCount <= dbMeta.getColumnCount();columnCount++)
            {
                String columnValue = null;
                String columnName = dbMeta.getColumnName(columnCount);
                int columnType = dbMeta.getColumnType(columnCount);
 
                if(columnType == Types.CHAR || columnType == Types.VARCHAR || columnType == Types.LONGVARCHAR)
                {
                    columnValue = rs.getString(columnName);
                }
                else if(columnType == Types.INTEGER || columnType == Types.BIGINT || columnType == Types.SMALLINT || columnType == Types.NUMERIC)
                {
                    long templong = rs.getLong(columnName);
                    if(!rs.wasNull())
                    {
                            columnValue  = Long.toString(templong);
                    }
                }
                else if(columnType == Types.DECIMAL || columnType == Types.DOUBLE || columnType == Types.FLOAT || columnType == Types.REAL)
                {
                    double tempDouble1 = rs.getDouble(columnName);
                    if(!rs.wasNull())
                    {
                            columnValue  = Double.toString(tempDouble1);
                    }
                }
                else if(columnType == Types.TIME || columnType == Types.TIMESTAMP || columnType == Types.DATE)
                {
                    Timestamp sqlTimeStamp = rs.getTimestamp(columnName);
                    if(!rs.wasNull())
                    {
                            columnValue = sqlTimeStamp.toString();
                    }
                }
                date.add(columnValue);
            }
        }
    fireTableStructureChanged();
    fireTableDataChanged();
    }
    
    @Override
    public String getColumnName(int c)
    {
        return columns.get(c);
    }
    
    @Override
    public int getRowCount() 
    {
        return rowCount;
    }
 
    @Override
    public int getColumnCount() 
    {
        return colCount;
    }
 
    @Override
    public Object getValueAt(int i, int i1) 
    {
        return date.get(i*colCount + i1);
    }
    
}
В этот класс я забивал ResultSet и он уже красиво все лишнее откидывал и делал симпатичную табличку )
0
 Аватар для Skipy
2000 / 1427 / 92
Регистрация: 25.11.2010
Сообщений: 3,611
14.02.2014, 14:00
Цитата Сообщение от dan41k Посмотреть сообщение
а как обычно делается, если нужно,к примеру, отобразить всю таблицу "Книги" из БД?
Не нужно. В таблице "Книги" полмиллиона записей. Покажите клиента, которому нужны все полмиллиона. И который, главное, все их просмотрит, когда загрузит.

Грузите по страницам, сделайте поиск (фильтр).
2
 Аватар для _Den_
161 / 157 / 29
Регистрация: 21.09.2013
Сообщений: 487
Записей в блоге: 2
14.02.2014, 14:04
Понятно, в итоге отсеиваются лишние данные, памяти меньше тратится и нагрузка на ТСР меньше, как-то так наверное. Идеальный мир)

Добавлено через 2 минуты
Цитата Сообщение от Apelsin199 Посмотреть сообщение
и он уже красиво все лишнее откидывал и делал симпатичную табличку
А смысл) если можно изначально лишнее не брать
1
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
14.02.2014, 14:06  [ТС]
Цитата Сообщение от _Den_ Посмотреть сообщение
А смысл) если можно изначально лишнее не брать
Неопытность наверное ) А может и простая человеческая лень... Лень было читать документацию, вот теперь и расхлёбываю )
0
]:->
 Аватар для dan41k
102 / 96 / 19
Регистрация: 12.11.2013
Сообщений: 398
14.02.2014, 14:07
Цитата Сообщение от Apelsin199 Посмотреть сообщение
Неопытность наверное ) А может и простая человеческая лень... Лень было читать документацию, вот теперь и расхлёбываю )
а действительно, мало того что вы разгружаете запрос к БД, сразу не берете все подряд, потом разгружаете ваш метод, который перечитывает все данные из запроса) Профит, однако)
1
 Аватар для _Den_
161 / 157 / 29
Регистрация: 21.09.2013
Сообщений: 487
Записей в блоге: 2
14.02.2014, 14:11
Зачем так сложно? Я конечно не знаю что там у вас и как, но покажу свой пример. На методы в классе не обращайте внимания, суть в том как происходит создание объекта с БД
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
/** Метод возвращает список всех книг */
    public List<Book> getAllBooks() throws SQLException {
 
        List<Book> bookList = new ArrayList<>();
        Statement st = null;
        ResultSet rs = null;
 
        try {
            st = con.createStatement();
            rs = st.executeQuery("SELECT ISBN, name, year, amount, price, pages, cover FROM Book ORDER BY name");
 
            while (rs.next()) {
                Book book = new Book(rs);
                bookList.add(book);
            }
        } catch (SQLException e) {
            System.err.println(e);
        } finally {
            if (st != null)
                st.close();
            if (rs != null)
                rs.close();
        }
        return bookList;
    }
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package bookshop.book;
 
import javax.swing.*;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
 
public class Book {
 
    private String ISBN;
    private String name;
    private String cover;
    private int year;
    private int amount;
    private double price;
    private int pages;
    
    
    
    public Book(ResultSet rs) throws SQLException {
        
        setISBN(rs.getString(1));
        setName(rs.getString(2));
        setYear(rs.getInt(3));
        setAmount(rs.getInt(4));
        setPrice(rs.getDouble(5));
        setPages(rs.getInt(6));
        setCover(rs.getString(7));
    }
    
    
    public String getISBN() {
        return ISBN;
    }
 
    public void setISBN(String ISBN) {
        this.ISBN = ISBN;
    }
 
    public String getName() {
        return name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public String getCover() {
        return cover;
    }
 
    public void setCover(String cover) {
        this.cover = cover;
    }
 
    public int getYear() {
        return year;
    }
 
    public void setYear(int year) {
        this.year = year;
    }
 
    public int getAmount() {
        return amount;
    }
 
    public void setAmount(int amount) {
        this.amount = amount;
    }
 
    public double getPrice() {
        return price;
    }
 
    public void setPrice(double price) {
        this.price = price;
    }
 
    public int getPages() {
        return pages;
    }
 
    public void setPages(int pages) {
        this.pages = pages;
    }
 
    @Override
    public boolean equals(Object obj) {
 
        if (obj == null)
            return false;
 
        if (!(obj instanceof Book))
            return false;
 
        return this.ISBN.equals(((Book) obj).ISBN);
    }
 
    @Override
    public String toString() {
 
        return "Book [name = " + name + ", year = " + year + ", " + "ISBN = "
                + ISBN + ", " + "amount = " + amount + ", price = " + price
                + ", pages = " + pages + "]";
    }
 
}
Добавлено через 52 секунды
Метод взял данные, передал в конструктор Book и всё, у вас там огого. В идеальном мире я бы конечно напрямую данные с БД брал и сразу фильтровал, но пока так
1
11 / 11 / 0
Регистрация: 04.11.2012
Сообщений: 127
17.02.2014, 11:00  [ТС]
Цитата Сообщение от _Den_ Посмотреть сообщение
st = con.createStatement();
Тут у меня вопрос... Что такое "con" ?
0
]:->
 Аватар для dan41k
102 / 96 / 19
Регистрация: 12.11.2013
Сообщений: 398
17.02.2014, 11:44
Цитата Сообщение от Apelsin199 Посмотреть сообщение
Что такое "con" ?
переменная типа Connection)
1
 Аватар для _Den_
161 / 157 / 29
Регистрация: 21.09.2013
Сообщений: 487
Записей в блоге: 2
17.02.2014, 14:50
В этом контексте думаю будет понятно
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class ManagingSystem {
 
    private static Connection con = null;
 
    private ManagingSystem() throws Exception {
        try {
            Class.forName("com.mysql.jdbc.Driver");//загружаем JDBC Driver
            String url = "jdbc:mysql://localhost:3306/BookShop";
            con = DriverManager.getConnection(url, "root", "root");//подключаемся к базе
        } catch (ClassNotFoundException e) {
            System.err.println(e);
        } catch (SQLException e) {
            System.err.println(e);
        }
    }
...
1
ɐwʎ ɔ vǝmоɔ dиw ɐʚонɔ
 Аватар для tankomaz
443 / 442 / 100
Регистрация: 14.10.2012
Сообщений: 1,146
Записей в блоге: 9
18.02.2014, 03:03
а почему вы не используете команду LIMIT в SQL? думаю частями было бы более солидно, передали первые 100 строк клиенту, а дальше в фоне пусть достраивает по 100 (к примеру), и вправду что будет - если передать 1_000_000 строк
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.02.2014, 03:03

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

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
40
Ответ Создать тему
Новые блоги и статьи
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru