Olá pessoal, sou novo em j2me.
Preciso enviar um arquivo .zip do celular pro servidor e não tenho ideia de onde começar.
Achei um exemplo que faz ao contrario, lê o arquivo .txt e exibe na tela.
Alguem teria um exemplo ou poderia me dizer por onde começar?
=)
Acho que assim tu faz.
Socket socket = new Socket("destino",portaDoDestino);
OutputStream out = socket.getOutputStream();
FileInputStream file = new FileInputStream("seuArquivo.zip");
byte[] buffer = new byte[512];
int readed = -1;
while ((readed = file.read(buffer))!= -1){
out.write(buffer,0,readed);
}
socket.close();
Mais tarde vou tentar e posto aqui… thanks!
hehe
Opa…
Não consegui não.
=~
Já consegui fazer a conexão com o socket e transferir strings.
Mas não consegui transferir um arquivo zip…
Alguem tem uma dica?
=D
Qual o problema como codigo acima?
qual a mensagem de erro?
Coloquei assim:
try {
// envia requisição ao servidor
String request = "OIII! TESTE";
FileInputStream file = new FileInputStream("seuArquivo.zip");
os = socket.openOutputStream();
os.write(request.getBytes());
os.close();
aí o erro:
D:\Documents and Settings\Camillo\j2mewtk\2.5.2\apps\Socket2\src\SocketMIDlet.java:84: cannot find symbol
symbol : class FileInputStream
location: class SocketMIDlet
FileInputStream file = new FileInputStream(“seuArquivo.zip”);
^
D:\Documents and Settings\Camillo\j2mewtk\2.5.2\apps\Socket2\src\SocketMIDlet.java:84: cannot find symbol
symbol : class FileInputStream
location: class SocketMIDlet
FileInputStream file = new FileInputStream(“seuArquivo.zip”);
^
2 errors
com.sun.kvem.ktools.ExecutionException
Build failed
importasse a classe?
la em cima da sua classe:
import java.io.FileInputStream;
Sim, importei agora. e deu isso:
symbol : class FileInputStream
location: package java.io
import java.io.FileInputStream;
^
D:\Documents and Settings\Camillo\j2mewtk\2.5.2\apps\Socket2\src\SocketMIDlet.java:85: cannot find symbol
symbol : class FileInputStream
location: class SocketMIDlet
FileInputStream file = new FileInputStream(“seuArquivo.zip”);
^
D:\Documents and Settings\Camillo\j2mewtk\2.5.2\apps\Socket2\src\SocketMIDlet.java:85: cannot find symbol
symbol : class FileInputStream
location: class SocketMIDlet
FileInputStream file = new FileInputStream(“seuArquivo.zip”);
^
3 errors
com.sun.kvem.ktools.ExecutionException
me parece que estais com algum problema de PATH
pois o pacote java.io é basico e padrão de todos os Javas.(JME, JSE, JEE).
se ele nnao esta sendo encontrado, e pelo que vi, em tempo de execução…
é porque algo de errado não esta certo 
[quote=dyorgio]me parece que estais com algum problema de PATH
pois o pacote java.io é basico e padrão de todos os Javas.(JME, JSE, JEE).
[/quote]
FileInputStream é básico onde fio !
Pela amor de D’…
[quote=dyorgio]
se ele nnao esta sendo encontrado, e pelo que vi, em tempo de execução…
é porque algo de errado não esta certo :)[/quote]
Existe algo errado sim e é sua dica que não tem nada a ver com J2ME, e devido a ingenuidade do outro, ele comprou a tua versão e está patinando para fazer funcionar…
Ui boone…
que rispido. :lol:
ensina então ai cara, mostra pra nois como é que faz
ha tempo :
Celular não é a mesma coisa que Smartphone ou Coletor de dados. Indicar algo que funciona com base no FP não vai ajudar o usuário.
Deveria deixar claro para ele que isto só funciona nos poucos dispostivos CDC que existem por aí.
Ele ainda não sabe discernir tua dica…
Quanto a postar como faz, eu passo a vez, porquê to vendo que ele com este assunto tão básico, ainda não procurou no tio Google e veio aqui e disse ter encontrado.
Sim, lá no tio, é muito fácil encontrar o que ele está querendo.
Eu procurei no google. porém, com meu pouco conhecimento não consegui chegar a lugar nenhum.
fico no aguardo de alguem que possa me ajudar.
Eu ainda bato no martelo que essa api é fundamental, em qualquer distro de JVM que se auto intitule Java.
Mais caso não seje, da uma olhada na classe File e verifica os metodos que tem para ler esse arquivo.
qual a JVM que estais usando? qual o dispositivo alvo?
Pesquisei aqui… e achei algumas coisas como usar datainputstream…
mas não consegui implementar nada…
achei esse exemplo também, mas não entendi…
Falei com um professor meu, ele me disse algo de serializar os dados e depois enviar…
public void upload()
{
int route=1;
try
{
System.out.println("I'm Fun Upload");
byte save[] = new byte[1024];
fcup = (FileConnection)Connector.open("file:///root1/sombr.png");
fdis = new DataInputStream(fcup.openDataInputStream());
dos = new DataOutputStream(csoc.openDataOutputStream());
dos.writeUTF("Uploading");
while(fdis.read(save)!=-1)
{
System.out.println("I'm in upload "+save);
dos.write(save);
dos.flush();
}
dos.close();
fdis.close();
}
catch(Exception eop)
{
System.out.println(" Break in upload "+eop);
}
System.out.println("$$$$$ Uploading Finished $$$$$$$");
}
and My java server code as:
public void call_Upload()
{
try
{
System.out.println("i'm in server upload: "+req);
byte save[] = new byte[1024];
BufferedOutputStream bos = new BufferedOutputStream(new DataOutputStream(new FileOutputStream("bless.png")));
while(dis.read(save)!=-1)
{
//System.out.println("In server "+dis.read(save));
bos.write(save);
}
dis.close();
bos.close();
}
catch(Exception eup)
{
System.out.println("Break in Server Call_UP "+eup);
}
System.out.println("$$$ At Server Uploading Finished ");
}
Ola camila, estais “com a faca e o queijo nas mãos”
basta usar o DataInputStream aon inves do FileInputStream do meu exemplo.
para pegar ele, esta bem exemplificado no codigo que tu postou.
tentei assim:
try {
InputStream is = null;
OutputStream os = null;
StreamConnection socket = null;
String server = "10.1.1.22";
String port = "4444";
String name = "socket://" + server + ":" + port;
socket = (StreamConnection)Connector.open(name, Connector.READ_WRITE);
String request = "Teste..";
os = socket.openOutputStream();
DataInputStream file = new DataInputStream("seuArquivo.zip");
os.write(request.getBytes());
os.close();
tela2();
}
catch (Exception ex) {
Alert alert = new Alert("Endereço Invalido","A conexão com o socket falhou\n" +"verifique o socket.", null, AlertType.ERROR);
alert.setTimeout(Alert.FOREVER);
display.setCurrent(alert, frmNeri);
return;
}
mas gerou esse erro:
D:\Documents and Settings\Camillo\j2mewtk\2.5.2\apps\aula\src\Aula2.java:103: cannot find symbol
symbol : constructor DataInputStream(java.lang.String)
location: class java.io.DataInputStream
DataInputStream file = new DataInputStream(“seuArquivo.zip”);
^
1 error
com.sun.kvem.ktools.ExecutionException
Build failed
Vamos la…
Como falei, terias que pegar o DataInputStream IGUAL foi feito no exemplo,…e vc não fez isso.
vou colar o codigo prontinho pra vc…
:
Socket socket = new Socket("destino",portaDoDestino);
OutputStream out = socket.getOutputStream();
FileConnection fcup = (FileConnection)Connector.open("file:///seuArquivo.zip");
DataInputStream fdis = new DataInputStream(fcup.openDataInputStream());
byte[] buffer = new byte[512];
int readed = -1;
while ((readed = fdis.read(buffer))!= -1){
out.write(buffer,0,readed);
}
out.flush();
socket.close();
analize o que eu te mandei, claro se der certo… e tente ver aonde errou no codigo anterior…