Diskuze: Server a Client
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.

Člen

Zobrazeno 12 zpráv z 12.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Tušil jsem, že jsi založil tohle vlákno http://www.itnetwork.cz/…490a85b4437a#… protože ti nikdo
neodpovídal. Ale složitost úlohy je relativní. V tomhle případě mi trvalo
asi minutu najít v tvém kódu takovou spoustu chyb, že nemělo smysl na to
odpovídat
Ale když už jsme u toho, začni od začátku. Udělej si jednoduchou konzolovou aplikaci a pošli si pouze jednou 1 znak. Až ti to bude fungovat, zkoušej si posílat soubory a složitější věci. Pak teprve přejdi na android a stejný kód zkoušej na něm.
A také si o tom něco načti, dělat něco bez zkušeností a navíc ještě bez znalostí je velice složité.
Dobře děkuji moc. Klasický text už mě posílat šel, ale to jsem posílal pomocí printWriter-u a toto je pomocí něčeho jiného. Toto jsem bral z jakési ukázky.
za os.flush má být os.close() toho jsem si nevšiml, ale teď to pro změnu
vyhodí totot
java.lang.ArrayIndexOutOfBoundsException
at java.lang.System.arraycopy(Native Method)
at java.io.BufferedOutputStream.write(BufferedOutputStream.java:128)
at javaapplication8.JavaApplication8.main(JavaApplication8.java:43)
Ahojte udělal jsem to na počítači takto:
server:
package server001;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
public class Server001 {
public static void main(String[] args) throws Exception {
Server001 server01 = new Server001();
ServerSocket server = new ServerSocket(4444);
server01.accept(server);
}
public void accept(ServerSocket ss) throws Exception{
Socket client = ss.accept();
InputStream is = client.getInputStream();
FileOutputStream fos = new FileOutputStream("/home/marek/Plocha/odeslano23.txt");
int c;
System.out.println("posilam");
while((c = is.read()) != -1){
System.out.println("1");
fos.write(c);
}
System.out.println("sfsdf");
is.close();
fos.close();
}
}
client:
package client001;
import java.io.*;
import java.net.Socket;
public class Client001 {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("192.168.1.13", 4444);
OutputStream os = socket.getOutputStream();
FileInputStream fis = new FileInputStream("/home/marek/images.jpeg");
int i;
while((i = fis.read()) != -1){
os.write(i);
}
fis.close();
os.flush();
os.close();
}
}
všechno normálně funguje, ale když jsem clienta předělal na mobil, tak
se nic nepošle
client na mobilu vypaá takto:
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Thread start = new Thread(new Runnable() {
@Override
public void run() {
try {
Socket socket = new Socket("192.168.1.13", 4444);
OutputStream os = socket.getOutputStream();
File file = new File("/storage/sdcard0/soubor.txt");
FileInputStream fis = new FileInputStream(file);
int i;
int c = -1;
while((i = fis.read()) != c){
os.write(i);
}
fis.close();
os.flush();
os.close();
}catch(Exception e){
e.printStackTrace();
}
}
});
start.start();
}
});
To na počítači mi normálně funguje a to na mobilu nee
ano je aji všechny
privilégia má. a teď jsem přišel na to, že jpg soubor to pošle
normálně. jen to txt nechce poslat
nevíš jakto ??
Díky
aha díky toho jsem si nevšiml... ale nevím jakto, ale tu fotku mi to
poslalo aji bez toho
Díky moc
Buffer na streamu má obvykle velikost 2-10 kB, pro větší data (jpg) se zapisuje automaticky. Obrázek to zdánlivě poslalo, ale stejně tam chyběla data na konci.
Jinak dobrá práce s postupným vývojem, hezky krok za krokem!
jojo něco jsem si o tom
načetl a hned je to lepší
předtím jsem jen tupě opisoval kód
díky moc
ještě,
že jsi mi to předtím hned neporadil. nikdy bych to neuměl
Zobrazeno 12 zpráv z 12.