forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Библиотеки (http://forum.boolean.name/forumdisplay.php?f=124)
-   -   Lib_binsock: прием/отправка бинарных данных через сокет (http://forum.boolean.name/showthread.php?t=8960)

ViNT 11.11.2013 00:34

Ответ: Lib_binsock: прием/отправка бинарных данных через сокет
 
Вложений: 1
Видимо нужно прописать классы J2ME в classpath, может еще какие-то ключи указать, точно не помню - уже очень давно не компилил через консоль.

null может быть в том случае, если соединение не было открыто (не вызывался метод open()), либо было закрыто (вызван метод close()). На самом деле да, подход не совсем верный - в таком случае стоило бы тоже выкидывать ошибку типа "соединение закрыто", но я по каким-то причинам этого делать не стал, возложив, фактически, контроль состояния библиотеки на программиста(фактически, есть только защита от ошибки, но вот отладку это только усложняет).

Gonzo 11.11.2013 00:43

Ответ: Lib_binsock: прием/отправка бинарных данных через сокет
 
Спасибо. Сейчас буду пробовать - если что - отпишусь в теме

Gonzo 11.11.2013 15:10

Ответ: Lib_binsock: прием/отправка бинарных данных через сокет
 
Вложений: 1
В общем поставил NetBeans 7.3, установил JDK (jdk-7u45-windows-i586.exe), установил J2ME SDK (oracle-jmesdk-3-4-rr-win32-bin.exe), плагины для IDE (oracle-jmesdk-3-4-rr-nb-plugins.zip). Все компиллится, все зависимости видит, но class потом не работает ( - программа сразу завершается при любом обращении к классу.
Так же непонятен способ подключения "M" - создал класс в пакете, добавил метод - так нужно?
Мне нужно расширить open параметрами KeepAlive и Delay:

Код:

    public static int open(String url, int Nagle, int KeepAlive){
        try {
            con = (SocketConnection)Connector.open(url);
            con.setSocketOption(SocketConnection.DELAY, Nagle);
            con.setSocketOption(SocketConnection.KEEPALIVE, KeepAlive);
            is = con.openInputStream();
            os = con.openOutputStream();
            return 1;
        } catch (Exception e) {
            LastError = e.getMessage();
            err(e, ERR_OPENERROR, "Unable to open connection or data stream");
            close();
            return -1;
        }
    }

Цитата:

DELAY- Socket option for the small buffer writing delay (0). Set to zero to disable Nagle algorithm for small buffer operations. Set to a non-zero value to enable.
Цитата:

KEEPALIVE - Socket option for the keep alive feature (2). Setting KEEPALIVE to zero will disable the feature. Setting KEEPALIVE to a non-zero value will enable the feature.
ViNT, не скомпиллишь еще разок, пока я не разобрался? )
И подскажи, что делать с классом M ? Как вообще называется подобный механизм?

Gonzo 11.11.2013 15:15

Ответ: Lib_binsock: прием/отправка бинарных данных через сокет
 
Кстати, кто будет разбираться - ссылка по теме

ViNT 11.11.2013 23:03

Ответ: Lib_binsock: прием/отправка бинарных данных через сокет
 
Вложений: 1
Класс M.class это стандартный класс MP, через него можно обращаться к функциям ввода-вывода. Чтобы работать с ним, нужно поместить его исходник в пакет по умолчанию проекта (там же должны находиться и библиотеки).
Дальше в нем можно определять нужные методы (вернее их "заглушки", поскольку сам скомпиленный класс использоваться не будет). Вариант класса, с которым компилится эта библиотека лежит в архиве.

Класс может не работать, если его не оттуда взять. Брать готовый класс нужно из build/preverified, тогда должен работать.

Gonzo 12.11.2013 17:20

Ответ: Lib_binsock: прием/отправка бинарных данных через сокет
 
ViNt, спасибо. Действительно - взял класс из папки preverified и все заработало.

Gonzo 12.11.2013 17:28

Ответ: Lib_binsock: прием/отправка бинарных данных через сокет
 
Кто будет использовать параметр KeepAlive - обратите внимание, что его нужно ставить не единицу, а именно значение в секундах через, которое требуется проверять соединение. Это насколько я могу судить по сниферу.
Вот пример подобного использования (правда к комментах):
http://jimm-fork.googlecode.com/svn/...TcpSocket.java
Если я не прав - поправьте меня.

Gonzo 15.11.2013 19:02

Ответ: Lib_binsock: прием/отправка бинарных данных через сокет
 
Как HTTPConnection преобразует URL в IP ?
Как это можно посмотреть?

ViNT 15.11.2013 23:56

Ответ: Lib_binsock: прием/отправка бинарных данных через сокет
 
Цитата:

Сообщение от Gonzo (Сообщение 270287)
Как HTTPConnection преобразует URL в IP ?
Как это можно посмотреть?

Если не путаю, преобразованием url занимается DNS, в данном случае, на стороне провайдера.

RblSb 14.12.2013 23:58

Ответ: Lib_binsock: прием/отправка бинарных данных через сокет
 
напишите пожалуйста пример как соединится и загрузить файл в программу как ресурс

ViNT 15.12.2013 02:21

Ответ: Lib_binsock: прием/отправка бинарных данных через сокет
 
Цитата:

Сообщение от RblSb (Сообщение 271424)
напишите пожалуйста пример как соединится и загрузить файл в программу как ресурс

По задумке должно быть так, но сам не тестировал:

PHP код:

uses binsock;

var
    
res:resource;
    
status:integer;
    
S:string;
    
begin
    status 
:= binsock.open('...');//Open connection
    
res := binsock.get_in_stream;//Get input stream (resource)
    
    //Use standard resource functions
    
if(ResourceAvailable(res)) then
        S 
:= ReadLine(res);
    
    
//Close connection
    
binsock.close;
end


RblSb 15.12.2013 15:24

Ответ: Lib_binsock: прием/отправка бинарных данных через сокет
 
А как прописать параметр для binsock.open? Можно пример к какому-нить файлу? У меня ошибку подключения всегда выдает

ViNT 16.12.2013 02:04

Ответ: Lib_binsock: прием/отправка бинарных данных через сокет
 
Цитата:

Сообщение от RblSb (Сообщение 271442)
А как прописать параметр для binsock.open? Можно пример к какому-нить файлу? У меня ошибку подключения всегда выдает

Параметр должен содержать полный URL, включая протокол, порт и параметры, если они необходимы. То есть, например, для данной страницы нужно указать URL в виде
Код:

http://forum.boolean.name:80/showthread.php?t=8960&page=3

Gonzo 14.12.2015 15:39

Ответ: Lib_binsock: прием/отправка бинарных данных через сокет
 
Допустим возникло исключение, управление передалось в обработчик исключения, там мы его обработали...
куда после этого перейдет управление в программе? На следующий шаг после инструкции, вызвавшей исключение или куда?

Phantom 14.12.2015 23:47

Ответ: Lib_binsock: прием/отправка бинарных данных через сокет
 
За пределы блока catch, либо в блок finally, если он объявлен. На следующий шаг после инструкции, вызвавшей исключение, уже никак не попадёшь (разве что в каких-то языках при помощи goto).

Два года пытаешься разобраться? Вот это упорство.


Часовой пояс GMT +4, время: 13:01.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot