Hoi,

De doelstelling van mijn opgave
is het programmeren van een Client/Server architectuur die moet instaan voor het transport van data over UDP. Zoals jullie weten
biedt UDP geen betrouwbare bestandsoverdracht , wat TCP wel heeft. Bijgevolg zal ik een "timeout" feature moeten inbouwen.
De communicatie tussen de client en de server is reeds operationeel. Telkenmale de Client om een datapakket vraagt (aan de server) start er tevens een nieuwe thread (Watchdog), die moet instaan voor de timeout.
Wanneer de server uitvalt blijft de client wachten op data. Dit is uiteraard niet de bedoeling, hij moet telkenmale een nieuwe aanvraag indienen. Dit los ik uiteraard op door de Watchdog te gebruiken. Die moet een pakket versturen naar de client, zodanig dat deze stopt met blokkeren (en dit na een vooraf gedefinieerde tijd (timeout)). Het deblokkeren gebeurt dus door een DatagramSocket te gebruiken op de lokale host die de receive (client) deblokkeert. Hiervoor moet de Watchdog weten naar welke socket hij moet sturen (namelijk dezelfde als degene die hij gebruikt om data van de server te ontvangen). Dus moet de client zich eerst kenbaar maken aan de hond, wat ik wil doen door telkenmale bij het oproepen van de watchdog een datagram van de client te versturen. Op die manier heeft hij zijn IP/poort.
Folders:
Client > ClientMain.java, Watchdog.java, Reminder.java
Server > ServerMain.java
Dit is wat ik reeds heb gedaan. Mijn probleem nu is het feit dat ik geen socket.receive(cReceivePacket); kan definiëren in mijn Watchdog
. Hier ziet u de foutmelding:
http://users.skynet.be/lve/Fout.JPG .
Ik heb tevens de client en server bestanden geuploaded: spam
Start eerst de server met als parameter een poort (willekeurig).
Start vervolgens de client met als paramaters: IP server, poort en timeout.
Mijn vorige thread werd gelokt, hopelijk gebeurt dit nu niet. De informatie met wat ik al dan niet heb gedaan en geprobeerd is nu immers aanwezig!
Ik vraag niet om een oplossing, ik vraag enkel hoe het komt dat ik in de watchdog geen ontvangende socket kan declareren. De foutmelding maakt mij tevens niets wijzer.
Dank bij voorbaat,
Luk
De doelstelling van mijn opgave
De communicatie tussen de client en de server is reeds operationeel. Telkenmale de Client om een datapakket vraagt (aan de server) start er tevens een nieuwe thread (Watchdog), die moet instaan voor de timeout.
Wanneer de server uitvalt blijft de client wachten op data. Dit is uiteraard niet de bedoeling, hij moet telkenmale een nieuwe aanvraag indienen. Dit los ik uiteraard op door de Watchdog te gebruiken. Die moet een pakket versturen naar de client, zodanig dat deze stopt met blokkeren (en dit na een vooraf gedefinieerde tijd (timeout)). Het deblokkeren gebeurt dus door een DatagramSocket te gebruiken op de lokale host die de receive (client) deblokkeert. Hiervoor moet de Watchdog weten naar welke socket hij moet sturen (namelijk dezelfde als degene die hij gebruikt om data van de server te ontvangen). Dus moet de client zich eerst kenbaar maken aan de hond, wat ik wil doen door telkenmale bij het oproepen van de watchdog een datagram van de client te versturen. Op die manier heeft hij zijn IP/poort.
Folders:
Client > ClientMain.java, Watchdog.java, Reminder.java
Server > ServerMain.java
Dit is wat ik reeds heb gedaan. Mijn probleem nu is het feit dat ik geen socket.receive(cReceivePacket); kan definiëren in mijn Watchdog
http://users.skynet.be/lve/Fout.JPG .
Ik heb tevens de client en server bestanden geuploaded: spam
Start eerst de server met als parameter een poort (willekeurig).
Start vervolgens de client met als paramaters: IP server, poort en timeout.
Mijn vorige thread werd gelokt, hopelijk gebeurt dit nu niet. De informatie met wat ik al dan niet heb gedaan en geprobeerd is nu immers aanwezig!
Ik vraag niet om een oplossing, ik vraag enkel hoe het komt dat ik in de watchdog geen ontvangende socket kan declareren. De foutmelding maakt mij tevens niets wijzer.
Dank bij voorbaat,
Luk
[ Voor 13% gewijzigd door whoami op 29-11-2003 18:28 ]