26. april 2002 - 17:47Der er
6 kommentarer og 1 løsning
sende objekter over netværk
Hej. Jeg vil gerne sende et objekt over et netværk,fx. fra en klient til en server eller omvendt. Mit spørgsmål er om jeg kan gøre dette vha. datagrammer eller om jeg SKAL bruge streams, eller om der er en helt anden alternativ måde at gøre det på...
Fordelen ved at sende objekter via streams er at med f.eks. ObjectOutputStream kan du sende de fleste objekter (dem der implementerer Serializable) og du kan få den genskabt med en simpel classcasting. Datagrammer kan selvfølgelig også bruges men det er meget afhængigt af hvor let det er at lave dit objekt om til en byte[] og ligeså vigtigt at lave en byte[] om til dit objekt. For strenge f.eks. er det ligetil men for dine egne klassetyper kan det måske være besværligt?
Du skrive "et antal" øh siden du øjensynligt sender fra en List hvorfor ikke bruge den metode på list objectet der returnere antalet af objecter. Hvis du ikke vil sende alle med sender man antal i metode kaldet.
Ligeledes skulle man nok medsende List objektet i metode kaldet.
Forresten er det kotume at give variabler lille forbogstav. (jeg tænker på din 'Containter')
ok..det er bare fordi jeg kan simpelthen ikke få det til at virke med streams. Når jeg prøver at overføre et object "hænger" programmet bare uden der sker noget. Her er en simpel kode hvor jeg fx. ikke kan få det til at virke. Hvad er der galt der ?
import java.io.*; import javax.swing.*; import java.net.*; public class objectOverNet extends JFrame { ServerSocket serverstub; Socket stub; ObjectInputStream in; ObjectOutputStream out;
public objectOverNet(int port) { try { serverstub=new ServerSocket(port); while (true) { stub=serverstub.accept(); in=new ObjectInputStream(stub.getInputStream()); out=new ObjectOutputStream(stub.getOutputStream());
public static void main(String[]argz) { try { if (argz.length==1) new objectOverNet(Integer.parseInt(argz[0]));
if (argz.length==2) new objectOverNet(argz[0],Integer.parseInt(argz[1]));
if (argz.length==0 || argz.length>2) throw new RuntimeException(); } catch (RuntimeException e) { System.out.println("\n\nFejl i kørsel!!!\n\nfor at starte programmet"+ "som klient skal du skrive :\njava objectOverNet serverip serverport \n"+ "for at starte programmet som Server skal du skrive :\njava objectOverNet serverport \n\n"); } } }
Tja, nu ved du det i hvertfald; jeg kan ikke huske hvornår jeg første gang fandt ud af/læste det.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.