08. februar 2004 - 19:29Der er
7 kommentarer og 3 løsninger
Sockets programmering
Mit overordnede formål er at oprette en server, der tager imod socketklienter, gemmer deres Sockets, så der på vilkårligt tidspunkt kan sendes data til en bestemt klient, og opretholder forbindelsen.
Jeg har implementeret dette efter den metode sun anbefaler,dvs. jeg opretter en thread for hver klient. Denne thread verificerer klienten, og hvis den må logge ind, tilføjes den til en vector der ligger i en anden klasse. Problemet er, at når thread delen er færdig (og klientens socket tilføjet vectoren i den eksterne klasse, disconnectes denne. Er det umuligt at opbevare klienternes sockets på denne måde? Hvordan skal dette så gøres?
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Slettet bruger
08. februar 2004 - 19:40#1
Det ville være lettere at guide dig, hvis du postede noget kode...MEN... du skal huske at gemme din reference (variabel) til socket'en i et scope, således du ikke mister den, når tråden "løber ud"....
Håber det hjalp, hvis ikke - så post noget kode :-)
Her er nogle forkertede versioner af klasserne: //KODE START
public Driver() ... Log log = new Log(); ClientAdmin clientAdmin = new ClientAdmin(log); try { sock = new ServerSocket(Const.PORT); while (true) { Authentication client = new Authentication(sock.accept(),clientAdmin, log); client.start(); } ...
//KODE SLUT Authentication extends thread, Her undersøges om klienten er gyldig, hvis den er, kaldes clientAdmin.addClient(), som tilføjer sock.accept() til en linkedlist (ikke en vector, som jeg tidligere kom til at skrive, (ikke at det gør nogen forskel til mit formål)). Herefter afsluttes Authentication threaden, og klienten disconnectes (som jeg jo ikke vil have).
Jeg har ikke gemt socket'en i et scope som du nævner, og det er nok der problemet ligger. Hvordan gøres dette?
1) således kan du også skrive til alle klienter - også individuelt. 2) du er nødt til at have en form for løkke. plejer at bruge while(run). Så vidt jeg husker laver input.readLine ikke buzy waiting
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.