Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal > Библиотеки

Ответ
 
Опции темы
Старый 16.12.2008, 01:41   #31
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Lib_socket

Смешно, но для сименсов подписывать приложения проще пареной репы. Там сертификаты не защищены абсолютно ничем. Просто купи себе кабель и поставь себе программу-анлокер скрытых дисков. У самого был C75 и я его перехакал с головы до ног. Побольше бы таких телефонов. Но увы. Тебе же нужно чтоб у пользователей работало, а какой смысл от программы если она будет работать только на семёне и то инструкция по установке будет довольно длинной и расчитанной на опытного пользователя с нужным кабелем. Я уже тоже основательно обломал себе зубы на накрутке и так в итоге решения и не нашёл.
Да уж, SUN это вам не Microsoft. Уже более 15 лет прошло, а взломать до сих пор не могут.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Phantom (16.12.2008)
Старый 16.12.2008, 09:06   #32
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: Lib_socket

Но увы. Тебе же нужно чтоб у пользователей работало, а какой смысл от программы если она будет работать только на семёне и то инструкция по установке будет довольно длинной и расчитанной на опытного пользователя с нужным кабелем.
Именно. Просто я сначала написал, а потом уже узнал про UNTRUSTED в User Agent.
(Offline)
 
Ответить с цитированием
Старый 22.12.2008, 19:38   #33
vitalik1
Оператор ЭВМ
 
Регистрация: 11.11.2007
Сообщений: 26
Написано 6 полезных сообщений
(для 10 пользователей)
Ответ: Lib_socket

Сделайте пожалуйста возможность создавать сервер ( ServerSocketConnection ) и получать свой IP ( getLocalAdress() ).
(Offline)
 
Ответить с цитированием
Старый 22.12.2008, 22:48   #34
Junk1
AnyKey`щик
 
Регистрация: 08.04.2008
Сообщений: 1
Написано 0 полезных сообщений
(для 0 пользователей)
Сообщение Ответ: Lib_socket

Позволяет ли библиотека принимать строку?
(Offline)
 
Ответить с цитированием
Старый 24.12.2008, 22:47   #35
vitalik1
Оператор ЭВМ
 
Регистрация: 11.11.2007
Сообщений: 26
Написано 6 полезных сообщений
(для 10 пользователей)
Ответ: Lib_socket

Можно двумя способами:
1)
function readstrstring;
var
   
sstring;
begin
   s
:='';
   while 
socket.available>do
      
s:=s+chr(socket.read);
   
readstr:=s;
end
2)
var
   
resresource;
   
linestring;
begin
   res
:=socket.get_stream;
   
line:=ReadLine(res);
end
(Offline)
 
Ответить с цитированием
Эти 2 пользователя(ей) сказали Спасибо vitalik1 за это полезное сообщение:
Junk1 (25.12.2008), Piligrim (25.12.2008)
Старый 29.12.2008, 21:26   #36
temned
Знающий
 
Аватар для temned
 
Регистрация: 29.07.2008
Адрес: Россия,Саратов
Сообщений: 206
Написано 22 полезных сообщений
(для 33 пользователей)
Ответ: Lib_socket

парни, может кто виложит описание всех команд?
(Offline)
 
Ответить с цитированием
Старый 08.01.2009, 17:36   #37
Serg153
Нуждающийся
 
Регистрация: 03.01.2009
Сообщений: 93
Написано 8 полезных сообщений
(для 15 пользователей)
Ответ: Lib_socket

===
вот наткнулся в инете на небольшое описание сетевых возможностей:
===
Для работы с сетью в J2ME используется специальный MIDP API: Generic Connection Framework (GCF). Поддержка GCF осуществляется на уровне конфигурации. Этот набор интерфейсов расположен в пакете javax.microedition.io.

GCF не ограничивается поддержкой HTTP. Возможны и другие типы соединений:
HTTP | http://www.host.com: 8080
Socket | socket://host.com:80
Socket | Listener socket://:1234 -Сервер!!! на телефоне
Datagram Sender datagram://host.com:9001 - UDP передача
Datagram Listener datagram://: 9001 - UDP слушание...
File file:/myfile.txt
Comm Port comm:com0;baudrate=19200;parity=odd
===
Дейтаграммы
Разрабатывая долгое время Java программы, Вы вполне могли не сталкиваться с понятием датаграмма. По сравнению с обычным TCP соединением, дейтаграммы позволяют более быстро передавать данные. Самым распространенным протоколом дейтаграмм является User Datagram Protocol (UDP), однако, поскольку все протоколы дейтаграмм строятся на одних и тех же базовых принципах, GCF поддерживает их непосредственно.

В основе технологии дейтаграмм лежит передача данных без установки соединения. Дейтаграммы передаются в сеть "вслепую", то есть факт доставки письма адресату не проверяется. После того как сообщение отправлено, приложение уже не заботит его судьба. В случае если связь плохая, дейтаграмма вполне может не дойти до адресата. Если Вы отправляете несколько дейтаграмм, то совсем не факт, что они придут адресату в том порядке, в котором Вы их отправляли. Необходимая проверка может быть выполнена на уровне приложения.

Приведенный ниже пример показывает как можно создать дейтаграмму и передать ее по указанному IP адресу.

try {
DatagramConnection dgc = (DatagramConnection)
Connector.open("datagram://localhost:9001");
try {
byte[] payload = "Test Message".getBytes();
Datagram datagram =
dgc.newDatagram(payload, payload.length);
dgc.send(datagram);
} finally {
dgc.close();
}
} catch (IOException x) {
x.printStackTrace();
}


В примере создается дейтаграмма с текстом "Test Message", которая передается на порт 9001 локального устройства (телефон передает дейтаграмму сам себе).

Это приложение будет работать правильно, даже если у вас не запущена программа, прослушивающая порт 9001, поскольку сразу после отправления приложение забывает о дейтаграмме, не требуя от адресата никакого подтверждения.

Ниже приведен код приложения, получающего отправленную дейтаграмму:

try {
DatagramConnection dgc = (DatagramConnection)
Connector.open("datagram://:9001");
try {
int size = 100;
Datagram datagram = dgc.newDatagram(size);
dgc.receive(datagram);
System.out.println(
new String(datagram.getData()).trim());
} finally {
dgc.close();
}
} catch (IOException x){
x.printStackTrace();
}


В приведенном примере устанавливается соединение с портом 9001. Предполагается, что размер дейтаграммы не может превышать 100 байт. В случае превышения лишние символы просто обрезаются. После того как дейтаграмма создана, вызывается метод receive(), который переводит поток в состояние ожидания до тех пор, пока не будет получено сообщение. После получения из дейтаграммы извлекается полезная информация и выводится на печать.

Сокеты
Другим распространенным типом соединения является TCP сокет-соединение. Передача данных при работе с сокетами происходит на основе подключения. Это значит, что отправитель и получатель должны установить между собой канал связи для обмена данными. Это как звонок по телефону. Если ваш друг не снял трубку, Вы не сможете передать ему информацию. Использование сокетов подразумевает гарантированную доставку данных в том порядке, в котором они были отправлены.

Приведенный ниже код показывает, как организовать прослушивание порта.

try
{
ServerSocketConnection ssc = (ServerSocketConnection)
Connector.open("socket://:9002");
StreamConnection sc = null;
InputStream is = null;
try{
sc = ssc.acceptAndOpen();
is = sc.openInputStream();
int ch = 0;
StringBuffer sb = new StringBuffer();
while ((ch = is.read()) != -1){
sb.append((char)ch);
}
System.out.println(sb.toString());
} finally{
ssc.close();
sc.close();
is.close();
}
} catch (IOException x) {
x.printStackTrace();
}


В приведенном примере ServerSocketConnection открывает порт 9002. Этот тип соединения используется для единственной цели - прослушивания входящей сокет информации. После вызова метода acceptAndOpen() поток переходит в состояние ожидания. После того как соединение установлено, этот метод возвращает экземпляр класса SocketConnection. С этого момента данные можно считывать из входящего потока.

Ниже приведен код, который инициализирует соединение с клиентом.

try{
SocketConnection sc = (SocketConnection)
Connector.open("socket://localhost:9002");
OutputStream os = null;
try{
os = sc.openOutputStream();
byte[] data = "Hello from a socket!".getBytes();
os.write(data);
} finally{
sc.close();
os.close();
}
} catch (IOException x){
x.printStackTrace();
}


SocketConnection устанавливает соединение с 9002 портом локальной машины. Если соединение успешно установлено, OutputStream записывает сообщение в исходящий поток. Обратите внимание, для передачи данных сокетам нужен канал данных. В случае если клиентское приложение не запущенно и не прослушивает порт, программа вернет ошибку.
====

вот... можно ли , на основе вышенаписанного - дополнить библиотеку сокетов...
или лучше добавить ещё 3 библиотеки - по аналогии с сокетной..
2/сокет-сервер
3/Udp-клиент
4/Udp-сервер
?
===
гдето читал что в Jad можно прописать автозапуск мидлет по событию....
в том числе и по УДП сигналу...
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
odd (18.07.2010)
Старый 08.01.2009, 17:58   #38
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Ответ: Lib_socket

UDP лучше не пользовать, особенно с нашим качеством связи.
Добавить ServerSocketConnection не сложно, раз уж вопрос возник, сделаю.
По вопросу автозапуска библиотека уже есть. Правда думаю, что сетевые события пройдут только к подписанному приложению.
(Offline)
 
Ответить с цитированием
Старый 09.01.2009, 14:45   #39
Serg153
Нуждающийся
 
Регистрация: 03.01.2009
Сообщений: 93
Написано 8 полезных сообщений
(для 15 пользователей)
Ответ: Lib_socket

дааа.. и если возможно - то реализовать сокет в отдельном Потоке...
и как бы чтоб оттуда выдавался статус текущего соеденения
кажется сперва телефон регестрируется у оператора связи,
затем уже подключается к указаному хосту...
и тогда был бы вызов из сокет
open(String url); которая ответила 2(идёт соеденение с сервером)
st_sct()-статус сокета :
(2)-идёт соеденение
(1)соеденение состоялось
(-1)соеденение неудачное
и.. если Соеденение с оператором идёт очень долго - это определит сам пользователь в своей проге - то была б возможность - выключить Поток с прогой соеденения...
чтото типа такого... может и сумбурно... :=)
(Offline)
 
Ответить с цитированием
Старый 10.01.2009, 09:36   #40
Serg153
Нуждающийся
 
Регистрация: 03.01.2009
Сообщений: 93
Написано 8 полезных сообщений
(для 15 пользователей)
Ответ: Lib_socket

байда какаято полоучается :-(
с эмулятора с компа всё нормально - и в сети и в инете - на сервер и передаёт и получает инфу..

а с телефона... зависает на открытии сокета - минут 5 висит.. и отключается....
- кто пробовал - может чтото подделать надо? типа сперва Сайт любой по шттп открыть а уж потом сокет..????

PS - щас вот глянул прогу кепермобиле - так там сокет немного по другому открывается
если в либе
import javax.microedition.io.Connector;
import javax.microedition.io.SocketConnection;
...
public static int open(String url) {
try{
c = (SocketConnection) Connector.open(url); i = c.openInputStream(); o = c.openOutputStream(); } tch(Exception ex) {return -1;}
return 0;
===
то в кепере
import java.io.DataInputStream;
import java.io.DataOutputStream;
import javax.microedition.io.*;
...
private StreamConnection a_javax_microedition_io_StreamConnection_fld;
private Thread a_java_lang_Thread_fld;
private DataOutputStream a_java_io_DataOutputStream_fld;
private DataInputStream a_java_io_DataInputStream_fld;
...
try
{
a_javax_microedition_io_StreamConnection_fld = (StreamConnection)Connector.open("socket://194.67.27.110:10116");
a_java_io_DataOutputStream_fld = a_javax_microedition_io_StreamConnection_fld.openD ataOutputStream();
byte abyte0[] = s2.getBytes();
a_java_io_DataOutputStream_fld.write(abyte0);
a_java_io_DataOutputStream_fld.flush();
}

т.е. сокет открывается через (StreamConnection)...

====
может быть так переделать либу? (возможно будет работать с телефона)

Последний раз редактировалось Serg153, 10.01.2009 в 09:48.
(Offline)
 
Ответить с цитированием
Старый 10.01.2009, 12:02   #41
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Ответ: Lib_socket

Не будет. StreamConnection просто родитель SocketConnection и у него нет некоторых методов последнего. Если бы дело было в этом, то не висело бы 5 минут а вылетало сразу из-за отсутствия класса SocketConnection
(Offline)
 
Ответить с цитированием
Старый 10.01.2009, 14:28   #42
Serg153
Нуждающийся
 
Регистрация: 03.01.2009
Сообщений: 93
Написано 8 полезных сообщений
(для 15 пользователей)
Ответ: Lib_socket

а в чём ещё может быть проблема?
другие программки - тот же мобильный кошелёк - в инет выходят...
(Offline)
 
Ответить с цитированием
Старый 10.01.2009, 16:55   #43
Serg153
Нуждающийся
 
Регистрация: 03.01.2009
Сообщений: 93
Написано 8 полезных сообщений
(для 15 пользователей)
Ответ: Lib_socket

ЗЫ - а может всётаки проблема в реальном телефоне изза того что необходимо выполнять Соеденения в отдельном потоке?
2piligrim - глянь на статью -
Многозадачность в JavaMe при HTTP соединении - http://x-coder.ru/index.php?newsid=84
может возможно библиотеку Lib_socket переделать в многопоточную?
и также там реализовать анимаию??? ну типа такого :=)
(Offline)
 
Ответить с цитированием
Старый 10.01.2009, 18:04   #44
Serg153
Нуждающийся
 
Регистрация: 03.01.2009
Сообщений: 93
Написано 8 полезных сообщений
(для 15 пользователей)
Ответ: Lib_socket

ДАА.. =) зависание на телефоне при открытии соедения - наверняка возникает изза того что Соеденение происходит в Основном потоке...
щас с помощью местной либы по многопоточности - запускал соеденение - Получилось ! :=)... правда приём данных неполучился...
но на сервак Данные идут хорошо =)....
---
(Offline)
 
Ответить с цитированием
Старый 10.01.2009, 23:18   #45
Piligrim
Оптимист
 
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений
(для 259 пользователей)
Ответ: Lib_socket

Про то что сетевые и интерфейсные нити нужно разделять я знаю. Просто в МР это приходится делать через ...
Сделаю.
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com